主要内容
- Flink是什么
- 为什么要用Flink
- 流处理的发展和演变
- Flink的主要特点
- Flink vs Spark Streaming
Flink是什么
Apache Flink是一个框架和分布式处理引擎,用于对无界和有解数据流进行状态运算
为什么选择Flink
- 流数据更真实地反映了我们的生活方式
- 传统的数据架构是基于有限数据集的
- 目标
- 低延迟
- 高吞吐
- 结果的准确性和良好的容错性
行业进行流处理举例
- 电商和市场销售
数据报表、广告投放、业务流程需要 - 物联网
传感器实时数据采集和显示、实时报警、交通运输业 - 电信业
基站流量调配 - 银行和金融业
实时结算和通知推送、实时检测异常行为
流处理的发展和演变
第一代流处理:来一个处理一个
优点:低延迟
第二代流处理:lambda架构
通过结合批处理和流处理,来做到低延迟和准确性
缺点是架构复杂,同时维护两套系统运维成本高
第三代流处理:flink
相对于spark streaming通过micro-batch来实现流处理,flink为纯流处理
Flink使用场景
事件驱动型应用
数据分析应用
数据管道应用
Flink特点
- 纯流处理
- 分层API
- 支持事件时间和处理时间语义
- exactly-once的状态一致性保证
- 低延迟,每秒处理书包玩个事件,毫秒级延迟
- 与众多常用存储系统的连接
- 高可用,动态扩展
Flink vs Spark Streaming
stream & micro-batch
取决于看问题的角度,微批小到一个事件时,就是流处理,反之流处理也能看成批处理
数据模型
- spark采用RDD模型,spark streaming的DStream实际上也就是一组组小批数据RDD的集合
- flink基本数据模型是数据流,以及事件序列
运行架构
- spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个
- flink是标准的流执行模式,一个事件字一个节点处理完后可以直接发往下一个节点进行处理