Flink的容错机制(checkpoint)

Flink的可靠性基石-Checkpoint容错机制

1.概述

flink 的checkpoint机制可以保证Flink 整个集群在某个算子因为某些原因出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保证应用流图的状态一致性。Flink的Checkpoint机制原理来自“Chandy-Lamport algorithm”算法。

2.原理

每个需要Checkpoint的应用在启动时,Flink的JobManager为其创建一个CheckpointCoordinator(检查点协调器),CheckpointCoordination全权负责本应用的快照制作。

过程:

在这里插入图片描述

(1)CheckpointCoordinator(检查点协调器) 周期性的向该流应用的所有source算子发送 barrier(屏障)。

(2)当某个source算子收到一个barrier时,便暂停数据处理过程,然后将自己的当前状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自己快照制作情况,同时向自身所有下游算子广播该barrier,恢复数据处理

(3)下游算子收到barrier之后,会暂停自己的数据处理过程,然后将自身的相关状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自身快照情况,同时向自身所有下游算子广播该barrier,恢复数据处理。

(4)每个算子按照步骤3不断制作快照并向下游广播,直到最后barrier传递到sink算子,快照制作完成。

(5)当CheckpointCoordinator收到所有算子的报告之后,认为该周期的快照制作成功; 否则,如果在规定的时间内没有收到所有算子的报告,则认为本周期快照制作失败。

3.Flink 的Checkpoint与Spark的相比,Flink有什么区别或者优势吗?

Spark Streaming的Checkpoint仅仅针对的是Driver的故障恢复做了数据和元数据的Checkpoint。而Flink的Checkpoint机制要复杂的多,它采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照。

猜你喜欢

转载自blog.csdn.net/weixin_48929324/article/details/118398886