這篇文章主要介紹“Flink的checkpoint與savepoint的區(qū)別是什么”,在日常操作中,相信很多人在Flink的checkpoint與savepoint的區(qū)別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Flink的checkpoint與savepoint的區(qū)別是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計制作的公司,為廣大用戶提供了網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,成都網(wǎng)站設(shè)計,廣告投放,成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
checkpoint 用于flink應(yīng)用發(fā)生故障時從checkpoint中進(jìn)行恢復(fù),例如當(dāng)應(yīng)用發(fā)生異常時崩潰,此時JVM不會關(guān)掉,而是嘗試從檢查點進(jìn)行重啟,可以自定義應(yīng)用的重啟策略。當(dāng)重啟失敗時,而又想從檢查點保存的狀態(tài)接著運(yùn)行,執(zhí)行
flink run -s hdfs://master:8020/flink/checkpoint03/s1/savepoint-0b3f0b-ed13f369aadc -c flink.ceshi /opt/flink_path/sbt-solr-assembly.jar
不同的狀態(tài)后端,其算子狀態(tài)和檢查點的保存位置都不相同。
Savepoint(保存點):是一種特殊的checkpoint,只不過不像checkpoint定期的從系統(tǒng)中去觸發(fā)的,它是用戶通過命令觸發(fā),存儲格式和checkpoint也是不相同的,會將數(shù)據(jù)按照一個標(biāo)準(zhǔn)的格式存儲,不管配置什么樣,F(xiàn)link都會從這個checkpoint 恢復(fù)
Savepoint 是用戶以手工命令的方式觸發(fā) Checkpoint,并將結(jié)果持久化到指定的存儲路徑中,其主要目的是幫助用戶在升級和維護(hù)集群過程中保存系統(tǒng)中的狀態(tài)數(shù)據(jù),避免因為停機(jī)運(yùn)維或者升級應(yīng)用等正常終止應(yīng)用的操作而導(dǎo)致系統(tǒng)無法恢復(fù)到原有的計算狀態(tài)的情況,從而無法實現(xiàn)從端到端的 Exactly-Once 語義保證。
1)配置 Savepoints 的存儲路徑
在 flink-conf.yaml 中配置 SavePoint 存儲的位置,設(shè)置后,如果要創(chuàng)建指定 Job 的 SavePoint,可以不用在手動執(zhí)行命令時指定 SavePoint 的位置。
state.savepoints.dir: hdfs:/hadoop101:9000/savepoints
2)在代碼中設(shè)置算子ID
為了能夠在作業(yè)的不同版本之間以及 Flink 的不同版本之間順利升級,強(qiáng)烈推薦通過手動給算子賦予 ID,這些 ID 將用于確定每一個算子的狀態(tài)范圍。如果不手動給各算子指定 ID,則會由 Flink 自動給每個算子生成一個 ID,而這些自動生成的 ID 依賴于程序的結(jié)構(gòu),并且對代碼的更改時很敏感的。因此,強(qiáng)烈建議手動設(shè)置 ID。
stream.flatMap(_.split(" ")) .uid("flapMap-001") // 每個算子都指定一個uid,便于從保存點中恢復(fù)出算子的狀態(tài) .map((_, 1)) .uid("map=001") .keyBy(0) .sum(1) .uid("sum-001") .print()
3)觸發(fā) SavePoint
//先啟動Job [root@hadoop101 bin]# ./flink run -c com.bjsxt.flink.state.TestSavepoints -d /home/Flink-Demo-1.0-SNAPSHOT.jar //手動觸發(fā)SavePoint,然后取消作業(yè) [root@hadoop101 bin]# ./flink savepoint 6ecb8cfda5a5200016ca6b01260b94ce [root@hadoop101 bin]# ./flink cancel 6ecb8cfda5a5200016ca6b01260b94ce
4)從保存點中恢復(fù)作業(yè)
flink run \ -s hdfs://hadoop101:9000/savepoints/savepoint-6ecb8c-e56ccb88576a \ -c com.bjsxt.flink.state.TestSavepoints \ -d /home/Flink-Demo-1.0-SNAPSHOT.jar
到此,關(guān)于“Flink的checkpoint與savepoint的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
當(dāng)前名稱:Flink的checkpoint與savepoint的區(qū)別是什么
URL鏈接:http://weahome.cn/article/goseod.html