Flink 从 Checkpoint 中恢复数据

本文开头附:Flink 学习路线系列 ^ _ ^

接上文:Flink笔记(十八):Flink 之 StateBackend 介绍 & 使用,本文介绍 Flink 从 Checkpoint 中恢复数据。

当 Flink 任务提交后,只有遇到 1.程序错误2.人为 Cancel掉,任务就会停止。


1. 任务异常,设置保存 CheckPoint 中途数据不被删除

       如果现在有个任务已经执行很长时间,这样就突然停止了,那么中间过程处理结果全丢了,重启后重跑岂不很浪费时间。这样显然是不行的,所以我们可以通过以下设置来保存任务处理中途的 CheckPoint 数据的(如果不设置,任务停止后CheckPoint数据会自动删除)。

 //系统异常退出或人为 Cancel 掉,不删除checkpoint数据
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

2.从 CheckPoint 中恢复数据(Web页面操作)

2.1 测试数据输入

Flink 从 Checkpoint 中恢复数据_第1张图片

2.2 计算结果

        当前集群,共两个 TaskManager 。两个 TaskManager 计算结果为(Hadoop,2)(Flink,3)
Flink 从 Checkpoint 中恢复数据_第2张图片
Flink 从 Checkpoint 中恢复数据_第3张图片

2.3.人为 Cancel 任务

此时,人为 Cancel 掉该任务。
Flink 从 Checkpoint 中恢复数据_第4张图片

2.4 从 CheckPoint 中恢复数据

       checkPoint 路径:hdfs://192.168.204.210:9000/StateBackend/31f48d20d48f0bec256e6b4d24553b8a/chk-536,参数填写完成之后,执行Submit提交。
Flink 从 Checkpoint 中恢复数据_第5张图片

2.5 再次测试数据输入

Flink 从 Checkpoint 中恢复数据_第6张图片

2.5 再次查看计算结果

       人为 Cancel 任务前,两个 TaskManager 计算结果为(Hadoop,2)(Flink,3)。恢复数据后,输入 Fink、Flink、Hadoop后。

       数据恢复OK 的话,计算结果应该为(Hadoop,3)(Flink,5)。如下图所示:
Flink 从 Checkpoint 中恢复数据_第7张图片
Flink 从 Checkpoint 中恢复数据_第8张图片

2.6 至此,数据恢复OK

       数据恢复OK

3.从 CheckPoint 中恢复数据(命令行操作)

       命令行操作恢复数据,使用-s 参数。请参考:Flink笔记(三):Flink 提交任务的两种方式。

       推荐使用 Web 端页面提交。命令行操作,此处不再做赘述。


博主写作不易,来个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

你可能感兴趣的:(Flink)