Flink
数据处理架构
批处理
流处理
基础概念
并行
-
数据并行
- 同一个算子的不同实例处理不同的数据,既算子的并行度
-
任务并行
- 不同算子本来是有先后顺序的,放在不同的机器上,实现流水线式的作业
数据交换策略
-
算子间均有多个实例,那两种算子多对多实例间怎么传递数据
-
api
性能指标
-
关系
操作
-
转换
-
概念
- 每个事件只处理一次
-
api
-
作用于单个事件的基本转换,输入和输出都是dataStream
-
map
- 单个事件的1对1
-
flatmap
- 单个事件的1转n
-
fliter
- 单个事件的1转0、1
-
-
按key分的转换,dataSteam和keyedstream之间的互转
-
单条流和多条流之间的转换
-
union
-
物理上多条相同泛型的datastream合并成一条
- 没有顺序保证,也不会去重
-
-
connect
-
物理上多条不同泛型的datastream流合并成一条
- 合并后的流还是针对每种类型的事件分别处理,唯一的好处是可以同时获得两条流的上下文信息,可以存储一些状态来做判断
-
-
split和select
- union的逆操作
-
sideout
- union的逆操作
-
-
-
实现函数
-
-
滚动聚合
-
窗口
-
概念
-
组件
-
代码
- getExecutionEnvironment可以根据上下文环境的不同,获取本地或者远程执行环境
- 只有在env.execute之后,系统才会触发程序执行
时间语义
-
事件时间
-
处理时间
- 既机器时间
-
ingestion time 摄入时间
- 相当于事件时间和处理时间的混合体,很少用
状态管理
-
作用域
-
结果保障
-
至少一次
-
至多一次
-
精确一次
-
端到端精确一次
-
source要求有重置读取能力
-
sink要求有幂等写或者事务写的能力
-
幂等写
- 重放过程中,可能只有一部分状态被重新覆盖,导致有一些先前写入的但是不再需要的状态残留,所以可能会有整体结果不一致的可能
-
事务写
-
最终结果一定是一致的,但是在提交前,结果对外不可见,所以延迟会高一些
-
WAL写前日志
- 由flink提供,但是无法保证百分百精确一次,且有数据写入的波峰
-
2PC
- 需要sink本身支持,可以百分百精确一致,且没有数据写入波峰
-
-
-
-
-
-
状态恢复
-
状态存储
运行架构
数据流处理
-
flink
-
jobManager
-
taskManager
-
dispatcher
- 多个作业共享,主要负责协调jobManager和clinet
-
集群管理
- Yarn等
持久化
- hdfs等
高可用
- zookeeper
分支主题 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。