大数据计算检查点
Checkpoint 是什么?
定期给状态拍快照存到 HDFS,挂了从这里恢复,做到不重不漏
类比:游戏存档,死了从最近的存档点重来
机制
JobManager 周期性插入一个 barrier,barrier 随数据流往下传。算子收到 barrier 就把当前状态快照到 HDFS,全部完成后这次 checkpoint 才算成功。
barrier 对齐保证“快照时刻”是一致的:不会出现上游已经处理到第 100 条、下游只处理到第 90 条却一起存下来的情况。
Exactly-Once 的三块拼图
缺一块就退化成 At-Least-Once。
- Source 可重放:Kafka 记录 offset,恢复时从快照里的 offset 重读
- State 一致:所有算子状态在同一时刻快照
- Sink 幂等或事务:两阶段提交,checkpoint 完成才真正提交
调优
checkpoint 间隔太短会影响吞吐(一直传快照),太长则故障恢复时重放的数据多。常用 1~5 分钟,并开启增量 checkpoint(RocksDB)只传变化的部分。如果 checkpoint 一直失败,先看是不是状态太大或 HDFS 带宽不够。