Flink SavePoint的使用

checkPoint and savePoint

說到savePoint,一定會想到checkPoint,先來說下兩者的區別:

checkpoint:應用定時觸發,用戶保存狀態,會過期,內部應用失敗重啓的時候使用,默認情況下cancel時,會刪除之前的checkpoint。

savepoint:用戶手動執行,不會過期,相當於備份,可以在cancel的時候使用。一般可以用於修改並行度,程序升級等等。

所以如果想要在程序停掉後重啓,數據一致的情況下,強烈推薦使用cancel時做savepoint,當然,如果程序中沒有涉及到state,可以不用。

 

savePoint的使用

1.在flink-conf.yaml中配置savepoint存儲位置,不是必須設置,如果設置了,那麼做savepoint的時候,可以不指定位置,系統會默認使用你設置的位置。如果沒有設置,那麼在做savepoint的時候,必須指定位置,不然就會報錯。

state.savepoints.dir: hdfs://namenode:9000/flink/savepoints  或者是     hdfs:/flink/savepoints 

2.觸發savePoint【直接觸發或者是在cancel的時候觸發】

flink savepoint jobId [targetDirectory] [-yid yarnAppId]【針對on yarn模式需要指定-yid參數】

 

flink cancel -s [targetDirectory] jobId [-yid yarnAppId]【針對on yarn模式需要指定-yid參數】

 

這裏的jobId和yid我這裏截圖說明一下:

  這個是yid

 

這個是jobId:

所以這裏對應的命令就是:

  • flink  savepoint 2f0511c8fe430acb81a968aff0cbb5b9 -d hdfs:/user/root/flink -yid application_1560242904558_0258 或者flink  savepoint 2f0511c8fe430acb81a968aff0cbb5b9 -yid application_1560242904558_0258 這裏-d是指定位置
  •  flink cancel  -s hdfs:/user/root/flink 2f0511c8fe430acb81a968aff0cbb5b9  -yid application_1560242904558_0258 或者flink cancel  -s 2f0511c8fe430acb81a968aff0cbb5b9  -yid application_1560242904558_0258 這裏-s後面可以跟路徑也可以不跟路徑,取決於state.savepoints.dir有沒有配置

 

從指定的savepoint啓動job

flink run -s savepointPath [runArgs]

例子:我上面已經做了一個savepoint,保存的路徑爲hdfs:/user/root/flink   生成的文件是 savepoint-402ba9-e7e4915ab401

那我要從這個savepoint中啓動程序,對應命令就是:

nohup flink run -m yarn-cluster \
-yn 3 -yjm 1024 -ytm 1024 -p 3 \
-s hdfs:/user/root/flink/savepoint-402ba9-e7e4915ab401 \
-c com.sp.writetohbase.writetohbase \
 /usr/local/myjob/writetokafka/MyFlinkTTest-1.0-SNAPSHOT.jar &

多了一個-s 其他參數和正常啓動時的參數一樣

 

如果savepoint時報錯,可以去jobmanager的日誌上去查看具體原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章