Flink从外部检查点问题恢复

时间:2020-04-03 11:34:56

标签: docker apache-flink amazon-ecs

我正在使用从docker-flink安装的ECS内部运行的Flink。我已通过state.checkpoints.dir到flink-conf.yaml中的S3启用了对AWS S3的外部检查点。

现在根据Flink文档here,如果我们要在出现故障的情况下从检查点恢复,我们必须说bin/flink run -s :checkpointMetaDataPath [:runArgs],但我使用FLINK_HOME/bin standalone-job.sh start-foreground。因此,我无法弄清楚在发生故障时如何从外部检查点恢复我的Flink作业。

我们真的需要一些从检查点恢复的配置选项吗?作为重新启动策略的一部分,JM不能自动从状态存储中读取上一个偏移量吗?我是Flink的新手。

1 个答案:

答案 0 :(得分:1)

仅引用的Dockerfile不会启动Flink作业。它将仅启动能够执行Flink作业的Flink会话群集。下一步是使用bin/flink run提交工作。拥有通过StreamExecutionEnvironment.enableCheckpointing启用检查点的作业后,提交并运行该作业将为配置的位置创建检查点。

如果您有retaining of checkpoints enabled,则可以取消作业,然后通过bin/flink run -s ...从检查点恢复作业。

工作集群

如果您正在运行每个作业群集,其中映像已经包含用户代码jar,则可以通过使用--fromSavepoint <SAVEPOINT_PATH>作为命令行参数启动映像,从保存点恢复。请注意,<SAVEPOINT_PATH>需要从运行作业管理器的容器中访问。

更新

要在使用standalone-job.sh时从检查点恢复,必须致电

FLINK_HOME/bin/standalone-job.sh start-foreground --fromSavepoint <SAVEPOINT/CHECKPOINT_PATH>