为 Yarn Cluser 中的 Flink 作业的 Flink 检查点设置路径动态



我正在使用 Yarn 来运行 Flink 作业。对于每个 Flink 作业,我都会创建一个检查点。

我提交了一个在我的 Yarn 集群中运行的 Flink 作业。我有一个轮询作业,它检查 Yarn 上的作业是否失败并重新启动它。当作业再次提交时,Yarn 会为此 Flink 作业创建一个新application_id。 如何配置重新提交的 Flink 作业以使用重新启动的 Flink 作业的检查点。

我已经设置了会议state.savepoints.dir = hdfs://localhost:9000/checkpoint/in flink-conf.yaml'

创建 Flink 作业时,streamExecutionEnvironment.setStateBackend(new FsStateBackend("hdfs://localhost:9000/checkpoint/uuid-job-1"));

当我进行此设置时,检查点保存在 conf 文件 (hdfs://localhost:9000/checkpoint/( 中指定的路径中,而不是保存在我在创建 Flink 作业时设置的路径中。

任何帮助将不胜感激。谢谢!

不幸的是,您无法使用旧作业的检查点开始新作业。您可以做的是使用外部化的检查点。flink <=1.5 的一个缺点是外部化检查点的元数据存储在所有作业的单个目录中,该目录由 config 参数state.checkpoints.dir设置。但是您可以在每次提交之前更改它。

邮件列表线程中的一条附加说明:

好消息是 Flink 1.5 将重新设计外部化的方式。 检查点工作了一点:基本上,所有检查点现在都可以 被视为外部化,元数据将存储在根目录中 检查点的目录,而不是在所有作业的一个全局目录中。 这样,外部化检查点的元数据驻留在 每个作业的检查点目录,它应该相当简单 从中恢复。

最新更新