扫码关注公众号免费阅读全文:冰山烈焰的黑板报
1. Flink Checkpoint 流程
在使用 Flink 时, 我们基本都会用到 Checkpoint,也难免不会遇到 Checkpoint 慢或者失败等问题,如果想要排查这些问题,那么必须先知道 Checkpoint 的生产流程。关于 Flink Checkpoint 的流程,在 Flink 原理与实现:Checkpoint 这篇文章中做了比较详细的介绍。一个 Task 的 Checkpoint 流程包括以下几个步骤:
- JobManager 向 Source 算子发送 Barrier ,初始化 Checkpoint;
- Source 算子收到 Barrier 之后,Checkpoint 自己的 State,并向下游发送 Barrier;
- 下游收到 Barrier 后,进行 Barrier Alignment 处理;
- Task 开始同步阶段的 Snapshot;
- Task 开始异步阶段的 Snapshot;
- Task 做完 Checkpoint 之后,再上报 JobManager。
2. Checkpoint 监控
通过 Flink UI,我们可以看到 Flink Job 的运行状态、运行日志、Checkpoint 和反压等情况。现在我们就认识下 Flink UI 中与 Checkpoint 相关的部分,图 1 是 Flink 1.6 版本的 UI,1.9 之后 Flink UI 做了优化,不过大同小异。
在图 1 中,其中左侧侧边栏的:
- Task Manager:可以查看各个 Task 的配置、日志、资源等相关信息;
- Job Manager:可以查看 JobManager 的配置、资源、日志等相关信息。
图 1 右侧下方与 Checkpoint 相关的主要是 Checkpoints,在排查 Checkpoint 的相关问题时,也可能会用到 Subtasks 和 Back Pressures。
- Subtasks:可以查看 JobGraph 的各个节点 Subtask 的吞吐量等情况,能够据此判断数据倾斜情况;
- Back Pressures:用于观察 JobGraph 各节点算子的反压情况,其中:
- OK: 0 <= Ratio <= 0.10
- LOW: 0.10 < Ratio <= 0.5
- HIGH: 0.5 < Ratio <= 1
- Checkpoints:与 Checkpoint 相关的信息基本都在这里了。
- Overview:相当于是 Checkpoint Dashboard;
- History:各个 Checkpoint 的执行信息;
- Summary:整个 Job 所有 Checkpoint 的 End to End Duration、State Size 和 Buffered During Alignment 的最大值、最小值和均值;
- Configuration:Checkpoint 的配置信息,也就是 Flink 调优:Checkpoint 配置 的一些配置。
Summary 和 Configuration 比较简单就不多做赘述了,而 Overview 则如图 1 所示,比较简洁明了,需要说明的是 ID 都是 Checkpoint ID——可用于在 Task Manager 日志和 Job Manager 日志中查找对应的信息,More details 是该 Checkpoint 的生产明细信息。而 History 如图 2 所示:
Hi