一、Checkpoint
获取分布式数据流和算子状态的一致性快照是Flink容错机制的核心,这些快照在Flink作业恢复时作为一致性检查点存在。
1.1 原理
1.1.1 Barriers
Barrier是由流数据源(stream source)注入数据流中,并作为数据流的一部分与数据记录一起往下游流动。Barriers将流里的记录分隔为一段一段的记录集,每一个记录集都对应一个快照。每个Barrier会携带一个快照的ID,这个快照对应Barrier前面的记录集。如下图所示。

当一个算子从所有输入流都接收到一个快照(n)的barrier时,它首先会生成该算子的状态快照,然后往该算子的所有下游广播一个barrier。这个算子是sink算子时,它会告知检查点的 coordinator(一般是flink的jobManager),当所有sink算子都告知接收到了一个快照的barrier时,该快照生成结束。
1.1.2 对齐检查点(aligned Checkpoint)
当一个算子接收到多于一个输入流时,就需要进行这些流的barrier对齐。当一个算子接收到第一个输入流的快照barrier n时,它不能继续处理该流的其他数据,而是需要等待接收到最后一个流的barrier n,才可以生成算子的状态快照和发送挂起的输出记录,然后发送快照barrier n。否则,检查点快照n跟检查点n+1就会混淆。

检查点对齐保证了状态的准确性,但由于对齐操作是阻塞式的,会使检查点生成时长不可控,降低

文章详细介绍了Flink的Checkpoint机制,包括Barriers的概念,对齐与非对齐检查点的原理,以及如何配置检查点。同时,文章讨论了Savepoint,它是作业执行状态的全局镜像,用于作业恢复和升级。Savepoint的创建、管理和恢复过程也进行了阐述。两者的主要区别在于设计目的、生命周期和具体实现。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



