这是我参与「第四届青训营 」笔记创作活动的第2天
1. Checkpoint制作过程
① 每一个source算子都接收到JobManager发送的Checkpoint Barrier,标识状态快照制作的开始
② 下游算子会等待上游的Barrier都到达后才开始制作快照。 已经制作完成的上游算子会继续处理数据,并不会被下游算子制作快照的过程阻塞
③ 所有算子都告知JobManager状态制作完成后,整个Checkpoint就结束了
2. Checkpoint对作业性能的影响
-
解耦了快照制作和数据处理过程,各个算子制作完成状态快照后,就可以正常处理数据,不用等下游算子制作完成快照
-
在快照制作和Barrier Alignment(分界线对齐)过程中需要暂停处理数据,仍然会增加数据处理延迟
-
当一个上游任务向多个并行下游任务发送 Barrier 时,需要广播出去
-
当多个上游任务向同一个下游任务传递Barrier时,需要在下游任务执行“分界线对齐”(Barrier Alignment)操作,也就是需要等到上游所有并行分区的Barrier都到齐,才开始状态保存
-
下图Sum even任务有2个上游节点,Source1和Source2,Source1的Barrier可能比Source2的Barrier先到达,这种情况下要等待Source2的Barrier也到达后才能做快照 (Source1的Barrier:蓝色三角2,Source2的Barrier:橘色三角2)
-
- 快照保存到远端可能极为耗时
快照方式:
- 异步快照:操作符在做快照的同时也会处理新入的数据流(默认异步方式)
- 同步快照:操作符在做快照的同时不会处理新入的数据流,这种方式会增加数据处理的延迟