Flink 1.15.0取消作业时保留Checkpoint:存储与目录配置差异咨询
Flink中Checkpoint目录与Checkpoint存储的区别
1. 抽象层级与职责差异
- Checkpoint存储(CheckpointStorage):是Flink管理Checkpoint持久化的顶层抽象,负责处理Checkpoint元数据(标记Checkpoint状态的文件)和状态数据(算子快照文件等)的存储、读取、清理全流程。它支持多种实现,比如仅适合测试场景的
JobManagerCheckpointStorage,以及生产环境常用的FileSystemCheckpointStorage(基于HDFS/S3等分布式文件系统)。调用env.getCheckpointConfig().setCheckpointStorage("路径"),本质是指定使用FileSystemCheckpointStorage并设置其基础存储路径。 - Checkpoint目录(CheckpointingOptions.CHECKPOINTS_DIRECTORY):是
FileSystemCheckpointStorage专属的细粒度配置项,仅用来指定状态数据文件的存储位置,属于Checkpoint存储实现下的子配置。
2. 管理的存储内容区分
- 当你只调用
setCheckpointStorage("hdfs:///checkpoints-data/")时:
Checkpoint的元数据文件(例如_checkpoint_xxx格式的标记文件)会直接存放在这个基础路径下,状态数据文件默认也会存放在该路径的子目录中,两者存储位置关联。 - 当你额外配置
CHECKPOINTS_DIRECTORY后:
状态数据文件会被转移到这个指定目录单独存储,而元数据文件仍然保留在CheckpointStorage设置的基础路径下,实现元数据和状态数据的存储分离。
3. 配置生效条件与优先级
setCheckpointStorage()属于代码层面的直接指定,优先级高于配置文件中的对应项,且必须先指定有效的Checkpoint存储实现,CHECKPOINTS_DIRECTORY才会生效;CHECKPOINTS_DIRECTORY仅对FileSystemCheckpointStorage生效,对其他类型的Checkpoint存储(比如JobManager存储)无意义。
针对你的场景建议
你要实现取消作业时保留Checkpoint,两种配置方式可以按需选择:
- 如果不需要分离元数据和状态数据,直接调用
setCheckpointStorage("hdfs:///checkpoints-data/")即可,无需额外配置CHECKPOINTS_DIRECTORY; - 如果需要将状态数据和元数据存到不同位置,再通过
config.set(CheckpointingOptions.CHECKPOINTS_DIRECTORY, "...")指定状态数据的存储目录。
内容的提问来源于stack exchange,提问作者Vin
相关产品推荐
相关产品推荐

