ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【Flink】Flink Checkpoint 流程剖析 [打印本页]

作者: 王海鱼    时间: 2025-1-5 03:29
标题: 【Flink】Flink Checkpoint 流程剖析
Flink Checkpoint 流程剖析


  
Checkpint 流程概括

使命运行后 JobMaster 定时执行 Checkpoint,JobMaster 会通过调用 CheckpointCoordinator 对作业举行 Checkpoint。

CheckpointCoordinator 开始举行 Checkpoint,它首先会先创建 PendingCheckpoint,然后开始给 Checkpoint 计时,再关闭网关开始触发 OperatorCoordinator 的 Checkpoint。
假如是 SourceOperatorCoordinator,则这时会调用 Source 的 getSplitSerializer,获取分片序列化器,然后将 SplitAssignmentTracker 中使命运行时分配的分片序列化创建 Snapshot,再将 Snapshot 放入 PendingCheckpoint 中。
OperatorCoordinator 状态触发完后,开始触发 MasterHooks 状态快照,MasterTriggerRestoreHook 由 UDFStreamOperator 内部的实现 WithMasterCheckpointHook 接口的 Function 创建,用于在 Master 触发 Checkpoint 时,Function 需要举行的操纵。
MasterHooks 调用完后,CheckpointCoordinator 将给子使命 TaskManager 发送哀求,通知它们开始 Checkpoint。
TaskExecutor 获取相应的使命 Task,Task 调用 StreamTask 开始举行 Checkpoint,StreamTask 调用 Mailbox 执行 Checkpoint 事件,Mailbox 执行 Checkpoint 事件时, Source 将不会从数据源读取数据。
Checkpoint 事件开始执行,假如 Checkpoint 需要强制对齐,那么需要异步创建 Channel 和结果分区的数据快照, 随后在执行流传 Barrier 前,SubtaskCheckpointCoordinatorImpl 会调用 OperatorChain 让 Operator 举行 Barrier 前的准备操纵,然后开始往下游流传 Barrier。
SubtaskCheckpointCoordinatorImpl 创建 CheckpointBarrier 并将 CheckpointBarrier 发送给 RecordWriterOutput 将 Barrier 传输给下游使命,然后注册 Barrier 对齐超时计时器。


Barrier 流传完后,假如之前创建了 Channel 状态快照 ,那么还需要异步完成 Channel Output 的数据快照。
末了 SubtaskCheckpointCoordinatorImpl 开始对当前子使命的全部算子举行 Checkpoint,这时会举行算子创建快照时的操纵,算子状态是存储在 OperatorStateBackend 和 KeyedStateBackend 中的, SubtaskCheckpointCoordinator 将会创建 OperatorStateBackend 和 KeyedStateBackend 的状态快照。
下游使命这时是正常处置处罚上游发送过来的数据的,但是上游正在举行 Checkpoint,数据也是被发送过来的 CheckpointBarrier 分割开了,处置处罚到背面会接收到上游的 CheckpointBarrier,也就表示着当前 Checkpoint 上游快照数据已经处置处罚完,下游也开始举行 Checkpoint 了,下游举行 Checkpoint 的过程也是和上面的一样,继续调用 SubtaskCheckpointCoordinatorImpl 开始举行 Checkpoint。
总的来说,Checkpoint 将创建 Coordinator 状态、托管键值状态、托管算子状态、未处置处罚的键值状态、未处置处罚的算子状态、输入通道状态和结果分区状态的快照。


Checkpoint 触发流程剖析 (Flink 1.20)

使命启动后 JobManager 开始定期对使命执行 Checkpoint


JobManager 利用 CheckpointCoordinator 触发 Checkpoint


CheckpointCoordinator 初始化 Checkpoint 所需要的信息


触发全部 OperatorCoordinator Checkpoint


触发 MastersHooks 状态快照


CheckpointCoordinator 通知子使命开始 Checkpoint


子使命开始触发 Checkpoint


MailBoxProcessor 异步执行 Checkpoint 事件


初始化输入端状态


触发 StreamOperator 状态快照


下游算子接收到 CheckpointBarrier 后开始 Checkpoint


CheckpointBarrierHandler 处置处罚 Barrier


参考:
Flink Stateful Stream Processing:https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/concepts/stateful-stream-processing/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4