我正在使用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作业时设置的路径中。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
不幸的是,你不能用旧的检查点开始新的工作。你可以做的是使用externalized checkpoints。 flink< = 1.5的一个缺点是外部化检查点的元数据存储在由config参数设置的所有作业的单个目录中:state.checkpoints.dir
。但是你可以在每次提交之前改变它。
来自邮件列表thread的另一个注释:
好消息是,Flink 1.5将重做外化的方式 检查点有点工作:基本上,所有检查点现在都可以 被认为是外化的,元数据将存储在根目录中 检查点的目录,而不是所有作业的一个全局目录。 这样,外化检查点的元数据就位于 每个作业的检查点目录,它应该相当简单 从中恢复。