在Yarn Cluser中为Flink Job设置Flink Checkpoint的路径动态

时间:2018-05-22 13:28:54

标签: apache-flink flink-streaming flink-sql

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

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

我设置了conf      flink-conf.yaml`中的state.savepoints.dir = hdfs://localhost:9000/checkpoint/

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

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

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

1 个答案:

答案 0 :(得分:2)

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

来自邮件列表thread的另一个注释:

  

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