接上文:Flink笔记(十八):Flink 之 StateBackend 介绍 & 使用,本文介绍 Flink 从 Checkpoint 中恢复数据。
当 Flink 任务提交后,只有遇到 1.程序错误
、2.人为 Cancel掉
,任务就会停止。
如果现在有个任务已经执行很长时间,这样就突然停止了,那么中间过程处理结果全丢了,重启后重跑岂不很浪费时间。这样显然是不行的,所以我们可以通过以下设置来保存任务处理中途的 CheckPoint 数据的(如果不设置,任务停止后CheckPoint数据会自动删除)。
//系统异常退出或人为 Cancel 掉,不删除checkpoint数据
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
2.从 CheckPoint 中恢复数据(Web页面操作)
2.1 测试数据输入
2.2 计算结果
当前集群,共两个 TaskManager 。两个 TaskManager 计算结果为(Hadoop,2)
、(Flink,3)
。
此时,人为 Cancel 掉该任务。
checkPoint 路径:hdfs://192.168.204.210:9000/StateBackend/31f48d20d48f0bec256e6b4d24553b8a/chk-536
,参数填写完成之后,执行Submit
提交。
人为 Cancel 任务前,两个 TaskManager 计算结果为(Hadoop,2)
、(Flink,3)
。恢复数据后,输入 Fink、Flink、Hadoop
后。
数据恢复OK 的话,计算结果应该为(Hadoop,3)
、(Flink,5)
。如下图所示:
数据恢复OK
命令行操作恢复数据,使用-s
参数。请参考:Flink笔记(三):Flink 提交任务的两种方式。
推荐使用 Web 端页面提交。
命令行操作,此处不再做赘述。
Flink 从 Checkpoint 中恢复数据,介绍到此为止
文章都是博主用心编写,如果本文对你有所帮助,那就给我点个赞呗 ^ _ ^
End