首页/数据/数据工程与 ETL 速查/流任务 Checkpoint 与状态恢复
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

流任务 Checkpoint 与状态恢复

Checkpoint 定期把算子状态与消费位点做成一致性快照存到外部存储,作业故障后从最近一次成功快照恢复,避免从头重放。

作用故障恢复的一致性基础
存储HDFS、S3、OSS 等可共享存储
配合精确一次需要 checkpoint 与事务型 sink 共同实现

Flink 开启 checkpoint(Java)

Flink 开启 checkpoint(Java)
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(60_000);                       // 每 60 秒一次
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(30_000);
env.getCheckpointConfig().setCheckpointTimeout(10 * 60_000);
checkpoint 持续变大通常意味着状态膨胀(key 基数增长或窗口过长),不治理会让恢复时间不断拉长。

易错点

  • checkpoint 存在本地磁盘而非共享存储,节点宕机后无法恢复
  • 重启策略无限重试会掩盖真实故障,需要配合告警与重启次数上限

数据来源与参考

  • Apache Flink 官方文档:Checkpointing
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌