Flink通过SavePoint功能可以做到程序升级后,继续从升级前的那个点开始执行计算,保证数据不中断。

     Flink中CheckPoint用于保存状态,是自动执行的,SavePoint是指向CheckPoint的指针,需要手动执行。

     据Flink路线图,后面SavePoint会和CheckPoint合并成一个,不像现在这样分成两个,而且一个自动、一个手动了。

1.flink-conf.yaml中配置SavePoint存储位置

   不是必须设置,但是设置后,后面创建指定Job的SavePoint时,可以不用在手动命令时指定SavePoint的位置

state.savepoints.dir: hdfs://t-sha1-flk-01:9000/flink-savepoints

 

2.列出当前Job

[teld@T-SHA1-FLK-01 log]$ flink list
------------------ Running/Restarting Jobs -------------------
aaaaaaaaaaaa : 8eaee3ed045c14337568c1cf3a272a45 : MonitorEngine_V1.0_SH.A1_Minute (RUNNING)
bbbbbbbbbbbb : ca1f3ac0081711ee6a0767fe1fd5b31c : MonitorEngine_V1.0_SH.A1_Second (RUNNING)
--------------------------------------------------------------
No scheduled jobs.

 

3.停止Job,并将状态写入Savepoint

 

[teld@T-SHA1-FLK-01 log]$ flink cancel -s ca1f3ac0081711ee6a0767fe1fd5b31c
Cancelling job ca1f3ac0081711ee6a0767fe1fd5b31c with savepoint to default savepoint directory.
Cancelled job ca1f3ac0081711ee6a0767fe1fd5b31c. Savepoint stored in
hdfs://t-sha1-flk-01:9000/flink-savepoints/savepoint-ca1f3a-9f86a020ee76.

 

4.从指定的SavePoint启动Job

[teld@T-SHA1-FLK-01 log]$ flink run -s hdfs://t-sha1-flk-01:9000/flink-savepoints/savepoint-ca1f3a-9f86a020ee76

-p 6 -c cn.teld.monitor.MonitorEngine monitorengine_flink_sec-1.0-jar-with-dependencies.jar

 

5.建议为Flink程序中的每个操作设置uid以及Name

版权声明:本文为liugh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liugh/p/8367671.html