当前位置: > > > Flink - Checkpoint使用详解4(保存多个Checkpoint、全局配置存储位置)

Flink - Checkpoint使用详解4(保存多个Checkpoint、全局配置存储位置)

一、保存多个 Checkpoint

1,需求说明

(1)默认情况下,如果在任务中开启了 Checkpoint,则 Flink 只会保留最近成功生成的 1Checkpoint 数据。当 Flink 程序故障重启时,可以从最近的这份 Checkpoint 数据来进行恢复。

(2)但有时我们希望能够保留多份 Checkpoint 数据,并能够根据实际需要选择其中一份进行恢复,这样会更加灵活。
  • 例如:我们发现最近 2 个小时的数据处理有问题,希望将整个状态还原到 2 小时之前,这样就需要找到 2 个小时之前的 Checkpoint 数据进行恢复了。

2,实现方法

(1)Flink 可以支持保留多份 Checkpoint 数据,只需要在 Flink 的配置文件 flink-conf.yaml 中添加相关配置即可:

(2)例如我这里设置保存最近的 20Checkpoint 数据。
提示:这个配置针对整个客户端有效,只要是在这个客户端上提交的任务,都会使用这个配置。
state.checkpoints.num-retained: 20

(3)提交一个任务测试一下,可用发现 hdfs 中确实保留了该任务最近的 20Checkpoint 数据。

二、通过配置文件对 Checkpoint 保存地址进行全局配置

1,需求说明

    在之前样例中我们都是在代码中设置 Checkpoint 后的状态数据的存储位置,如果每一个任务都要添加相关代码还是略显麻烦。其实我们也可以通过配置文件进行全局配置。

2,实现方法

(1)Flink 可以支持保留多份 Checkpoint 数据,只需要编辑 Flink 的配置文件 flink-conf.yaml

(2)然后在里面添加如下配置即可,其中 hdfs 的路径根据需求自行调整。
state.checkpoints.dir: hdfs://192.168.121.128:9000/flink/checkpoints

(3)后续我们在任务代码中只需要开启 Checkpoint 即可,不需要再指定保存位置。
env.enableCheckpointing(1000*10)
评论0