Flink Checkpoint 原理流程以及常见失败原因分析
影响Checkpoint的几个关键参数:
| 参数 | 默认值 | 备注 |
|---|---|---|
| state.backend | none | 用于指定checkpoint state存储的backend, |
| state.backend.async | true | 用于指定backend是否使用异步snapshot,有些不支持async或者只支持async的state backend可能会忽略这个参数 |
| state.backend.fs.memory-threshold | 1024 | 用于指定存储于files的state大小阈值,如果小于该值则会存储在root checkpoint metadata file |
| state.backend.incremental | false | 用于指定是否采用增量checkpoint,有些不支持增量checkpoint的backend会忽略该配置 |
| state.backend.local-recovery | false | 任务本地恢复 |
| state.checkpoints.dir | none | 用于指定checkpoint的data files和meta data存储的目录,该目录必须对所有参与的TaskManagers及JobManagers可见 |
| state.checkpoints.num-retained | 1 | 用于指定保留的已完成的checkpoints个数 |
| state.savepoints.dir | none | 用于指定savepoints的默认目录 |
| taskmanager.state.local.root-dirs | none |
RETAIN_ON_CANCELLATION
CheckpointConfig config = env.getCheckpointConfig();config.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);config.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);config.setCheckpointInterval(``60000``);
ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION,表示一旦Flink处理程序被cancel后,会保留Checkpoint数据,以便根据实际需要恢复到指定的Checkpoint处理