在 Flink 中,状态可靠性保证由 Checkpoint 支持,当作业出现 failover 的情况下, Flink 会从最近成功的 Checkpoint 恢复。在实际情况中,我们可能会遇到 Checkpoint 失败,或者 Checkpoint 慢的情况,本文会统一聊一聊 Flink 中 Checkpoint 异常的情况(包括失败和慢),以及可能的原因和排查思路。
1. Checkpoint流程简介
首先我们需要了解 Flink 中 Checkpoint 的整个流程是怎样的,在了解整个流程
之后,我们才能在出问题的时候,更好的进行定位分析。
从上图我们可以知道,Flink 的 Checkpoint 包括如下几个部分:
● JM trigger checkpoint
● Source 收到 trigger checkpoint 的 PRC,自己开始做 snapshot,并往下游
发送 barrier
● 下游接收 barrier(需要 barrier 都到齐才会开始做 checkpoint)
● Task 开始同步阶段 snapshot
● Task 开始异步阶段 snapshot
● Task snapshot 完成,汇报给 JM
上面的任何一个步骤不成功,整个 checkpoint 都会失败。
2. Checkpoint异常情况排查
2.1 Checkpoint失败
可以在 Checkpoint 界面看到