Flink概念
1.flink是开源的,**分布式,高性能,高可用**,准确的流式处理框架
2.主要由Java代码实现
3.支持实时流(**stream**)处理和批处理(**batch**),批处理是流处理的一种
4.Flink原生支持**迭代计算,内存管理**,和**程序优化**
Flink特点
1.流式处理
2.良好的容错机制,有有状态的计算
3.具有可伸缩性(可以拓展在多台机器上运行,支持上千个节点)
4.性能:高吞吐,低延迟
Flink几种部署模式
1.Local 本地模式 单节点
2.Cluster (集群模式)Standlone,yarn
3.Cloud (云服务器)
Flink两种API
1.流式处理
2.批处理
Flink & Storm & SparkStreaming对比
Flink容错机制 checkpoint
-
轻量级的容错机制(全局是异步的,局部是同步的)
-
保证exactly-once语义
-
用于内部失败的恢复
-
基本原理(面试中常问)
1.Jobmanager不断往source注入barrier 2.barrier作为checkpoint的标志
savepoint
-
流过程中的状态历史版本
-
具有可以replay的功能
-
外部恢复(应用重启和升级,当你不知道该从哪里恢复的时候从savepoint中恢复)
-
两种方式触发
1.Cancel with savepoint 2.手动主动除发
flink运行时架构
- Client
- JobManager
- TaskManager
- 角色之间的通信(AKKa)
- 数据传输(Netty实现)
Flink on Yarn 启动流程
Slot && parallelism
- 一个应用需要多少Slots
- 不设置slotSharingGroup(应用的最大并行度)
- 设置SlotSharingGroup(所有SlotSharingGroup中的最大并行度之和)
- 遍历每一个SlotSharingGroup,取最大的并行度数 相加
OperatorChain && Task
- OperatorChain的优点
- 减少线程切换
- 减少序列化反序列化
- 减少延迟并且提高吞吐能力
- OperateChain组成条件
- 没有禁用Chain
- 上下游算子并行度一致
- 下游算子的入度为1
- 上下游算子在同一个slot group
- 上下游算子之间没有发生shuffle
– https://blog.csdn.net/weixin_34874025/article/details/82730573