Flink1.13.2运行于Ververica2.5.1时S3存储state含绝对路径如何配置相对路径
Flink/Ververica集群savepoint、checkpoint存储相对路径配置方案
首先澄清一个常见误解:Flink 1.11+版本宣称的savepoint可迁移特性,本身不强制要求元数据内全是相对路径,框架读取时会自动识别savepoint根路径,忽略元数据中记录的原始绝对路径前缀,仅用路径后半段的相对部分定位文件,你当前看到的绝对路径记录本身不会影响savepoint的迁移、本地修改操作。
如果需要强制让元数据内存储纯相对路径,可通过以下配置实现:
1. 通用Flink配置(开源Flink、Ververica集群均适用)
- 开启状态存储相对路径全局开关,添加到作业配置或集群全局配置中:
state.storage.relative-paths.enabled: true
该配置项在Flink 1.11及以上版本默认值为true,如果你当前环境出现绝对路径,优先检查是否有其他配置覆盖了该默认值,手动设为true即可。
- 如果需要外部化checkpoint也使用相对路径存储,额外添加配置:
state.checkpoints.dir.externalized.relative: true
注:checkpoint本身设计为作业运行时的临时故障恢复介质,默认不支持跨路径迁移,开启上述配置后生成的外部化checkpoint才支持移动到其他路径恢复。
2. Ververica平台额外注意事项
如果你的作业通过Ververica Platform托管部署,直接在作业配置页的「自定义Flink配置」模块添加上述两个参数即可生效,不需要修改平台全局存储配置。
配置生效后新触发的savepoint、外部化checkpoint的_metadata文件中,所有状态文件路径都会替换为相对存储根目录的相对路径,你可以直接把整个savepoint目录拷贝到本地或其他存储系统中修改、恢复,不需要额外调整元数据内容。
内容的提问来源于stack exchange,提问作者Mihai Banu
相关产品推荐
相关产品推荐

