我使用的是在docker Flink安装的ECS内部运行的Flink。我已经在flink-conf.yaml.中通过state.checkpoints.dir
到S3为AWS S3启用了外部化检查点
现在,根据Flink的文档,如果我们想在失败的情况下从检查点恢复,我们必须说bin/flink run -s :checkpointMetaDataPath [:runArgs]
,但我使用FLINK_HOME/bin standalone-job.sh start-foreground
。所以我不知道在失败的情况下,我的Flink工作将如何从外部检查点恢复。
我们真的需要一些从检查点恢复的配置选项吗?JM不能作为重启策略的一部分自动从状态存储中读取最后的偏移量吗?我是Flink的新手。
单独引用的Dockerfile不会启动Flink作业。它只会启动一个能够执行Flink作业的Flink会话集群。下一步是使用bin/flink run
提交作业。一旦您有了一个通过StreamExecutionEnvironment.enableCheckpointing
启用检查点的作业,提交并运行它将在配置的位置创建检查点。
如果启用了保留检查点,则可以取消作业,并通过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>