开启Flink增量检查点后,state.checkpoints.num-retained应设为何值?
Flink增量检查点与
state.checkpoints.num-retained参数说明 默认值为1时增量检查点的工作机制
首先纠正一个常见误解:state.checkpoints.num-retained控制的是持久化存储中保留的已完成检查点数量,不是“内存中仅存一个检查点”——内存中的检查点是临时的,完成后会被持久化到指定存储(如HDFS、S3)。
当该参数设为1且启用增量检查点时,工作流程如下:
- 第一个检查点是全量快照,会把所有状态数据写入存储。
- 后续生成的检查点仅记录自上一个检查点以来的状态变更(增量部分),同时维护元数据结构指向恢复所需的所有状态片段(包括旧检查点中未变更的部分)。
- 每次新检查点完成后,旧检查点会被标记为待删除,但状态后端(如RocksDB)会跟踪哪些状态片段被当前保留的检查点引用,只有未被引用的冗余片段才会被清理。因此,最新的增量检查点依然完整可用,能直接用于作业恢复。
state.checkpoints.num-retained参数设置建议
设置值需结合恢复需求和存储资源情况:
- 若仅需从最新检查点恢复、且存储资源有限,保持默认值1完全可行,不会影响增量检查点的正常工作。
- 若需要支持回滚到最近几次的检查点(比如作业出现异常时,最新检查点可能已包含错误状态),建议设置为3-5,兼顾恢复灵活性和存储成本。
- 注意配合
state.checkpoints.cleanup-expired(默认开启),超过保留数量的旧检查点会被自动清理,无需手动操作。
内容的提问来源于stack exchange,提问作者priyadhingra19
相关产品推荐
相关产品推荐

