Flink删除旧的检查点文件

时间:2017-08-26 02:42:24

标签: apache-flink

我们使用文件系统作为检查点状态后端。以下是我们的设置:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setStreamTimeCharacteristic(timeCharacteristic);
env.getConfig().setAutoWatermarkInterval(Time.seconds(30).toMilliseconds());
env.enableCheckpointing(Time.seconds(30).toMilliseconds());
CheckpointConfig checkpointConfig = env.getCheckpointConfig();
checkpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
env.setStateBackend(new FsStateBackend(props.getProperty("backendstate.path")));

这在开发过程中工作正常,但是一旦我们部署到生产中,我们发现检查点文件很快占用磁盘空间。我在一个检查点目录中做了一个ls并找到了

chk-10   chk-104  chk-13  chk-18  chk-23  chk-28  chk-32  chk-37  chk-41  chk-46  chk-50  chk-55  chk-6   chk-64  chk-69  chk-73  chk-78  chk-82  chk-87  chk-91  chk-96 chk-100  ... hundreds of them

我想知道是否有办法删除旧的chk-x文件,或者我们必须手动删除它们?

3 个答案:

答案 0 :(得分:1)

在部署期间,在" conf / flink-conf.yaml "中设置以下属性:将文件保存到您要保留的最大检查点数:

state.checkpoints.num-retained

理想情况下,它应该大于1,因为如果最后一个检查点损坏,它有助于恢复作业。

有关详情,请查看:Config Options

答案 1 :(得分:0)

你可以尝试这个

CheckpointConfig config = env.getCheckpointConfig();
config.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

ExternalizedCheckpointCleanup模式配置取消作业时外化检查点会发生什么:

ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION :取消作业时保留外部化检查点。请注意,在这种情况下,您必须在取消后手动清理检查点状态。

ExternalizedCheckpointCleanup.DELETE_ON_CANCELLATION:取消作业时删除外部化检查点。只有在作业失败时,检查点状态才可用。

答案 2 :(得分:0)

Flink作业管理器必须能够访问存储文件的节点才能删除它们。 在同一台大机器上运行所有组件或使用DFS作为检查点存储。