Flink介绍/概览(摘自Stream Processing With Apache Flink)
最近工作上用到flink,需要对flink学习和研究<Stream Processing With Apache Flink>
1. 流处理的历史
第一代:lamda
- 在批处理基础上加了流式处理,如图
- 缺点1:同样的逻辑要在离线和实时处理引擎写一遍
- 缺点2:实时处理是近似值,不是精确值
- 缺点3:管理维护麻烦
第二代2013:提供了---运行一次(exactly once)保证
- 从低级api提供高级api
- 为了失败保证,延迟从毫秒到秒级别
- 结果仍然依赖事件的时间(timing)和顺序(Order)
第三代2015:解决了对时间和顺序的依赖 - 利用exactly once,第一次提供了,精确和一致性结果
- 可以像实时Live Data那样处理历史数据。
- 不再是高并发和低延迟权衡(trade off),而是两者都要保证
除了以上点,流处理还逐渐加入了下面特性: - 高可用
- 和资源管理器(Resource Manager) 高度集成,yarn,k8s
- 无缝迁移job到另一个流处理引擎,不丢失现有状态
2. Flink
Flink就是第三代流处理器的一中
- 加入了:事件时间(event time) 和处理时间(processing time) 语义,event-time语义提供精确性和一致性结果(即使是乱序事件);Processing time 用来延迟要求非常低的场景
- 仅一次(Exactly once)保证
- 百万/千万数据,毫秒级别延迟
- 提供分层的API。如DataStream API和Processing functions(windows函数,异步操做和精确时间和状态函数),关系API,linq式的table api
- 连接器(Connectors)---涵盖大部分存储系统---kafka,es,jdbc,hdfs,s3等
- 没有单点失败:高可用,7*24小时,非常低的downtime, 紧密集成yarn,k8s,mesos,可以快速从失败恢复,动态扩展job的运行环境
- 可以更改job的code,或者迁移job到不同的集群,而不丢失状态
- 详细,且可以自定义系统运行指标metrics,提前发现问题
- flink也可以是一个完整功能的离线处理引擎
- 开发人员友好,可以用ide调试(可以把flink所有模块运行到一个jvm里面)
- 除非注明,搜虎博客文章均为原创,转载请以链接形式标明本文地址
- 本文地址:https://blog.baidu-google.com/archives/Flink-introduce-from-Stream-Processing-With-Apache-Flink.html
前来学习!!!!
前来学习!!!!