溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flink的checkpoint與savepoint的區(qū)別是什么

發(fā)布時(shí)間:2021-12-31 15:24:29 來源:億速云 閱讀:299 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“Flink的checkpoint與savepoint的區(qū)別是什么”,在日常操作中,相信很多人在Flink的checkpoint與savepoint的區(qū)別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Flink的checkpoint與savepoint的區(qū)別是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

1. checkpoint

checkpoint 用于flink應(yīng)用發(fā)生故障時(shí)從checkpoint中進(jìn)行恢復(fù),例如當(dāng)應(yīng)用發(fā)生異常時(shí)崩潰,此時(shí)JVM不會(huì)關(guān)掉,而是嘗試從檢查點(diǎn)進(jìn)行重啟,可以自定義應(yīng)用的重啟策略。當(dāng)重啟失敗時(shí),而又想從檢查點(diǎn)保存的狀態(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)和檢查點(diǎn)的保存位置都不相同。

2. savepoint

Savepoint(保存點(diǎn)):是一種特殊的checkpoint,只不過不像checkpoint定期的從系統(tǒng)中去觸發(fā)的,它是用戶通過命令觸發(fā),存儲(chǔ)格式和checkpoint也是不相同的,會(huì)將數(shù)據(jù)按照一個(gè)標(biāo)準(zhǔn)的格式存儲(chǔ),不管配置什么樣,F(xiàn)link都會(huì)從這個(gè)checkpoint 恢復(fù)

Savepoint 是用戶以手工命令的方式觸發(fā) Checkpoint,并將結(jié)果持久化到指定的存儲(chǔ)路徑中,其主要目的是幫助用戶在升級和維護(hù)集群過程中保存系統(tǒng)中的狀態(tài)數(shù)據(jù),避免因?yàn)橥C(jī)運(yùn)維或者升級應(yīng)用等正常終止應(yīng)用的操作而導(dǎo)致系統(tǒng)無法恢復(fù)到原有的計(jì)算狀態(tài)的情況,從而無法實(shí)現(xiàn)從端到端的 Exactly-Once 語義保證。

1)配置 Savepoints 的存儲(chǔ)路徑

在 flink-conf.yaml 中配置 SavePoint 存儲(chǔ)的位置,設(shè)置后,如果要?jiǎng)?chuàng)建指定 Job 的 SavePoint,可以不用在手動(dòng)執(zhí)行命令時(shí)指定 SavePoint 的位置。

state.savepoints.dir: hdfs:/hadoop101:9000/savepoints

2)在代碼中設(shè)置算子ID

  為了能夠在作業(yè)的不同版本之間以及 Flink 的不同版本之間順利升級,強(qiáng)烈推薦通過手動(dòng)給算子賦予 ID,這些 ID 將用于確定每一個(gè)算子的狀態(tài)范圍。如果不手動(dòng)給各算子指定 ID,則會(huì)由 Flink 自動(dòng)給每個(gè)算子生成一個(gè) ID,而這些自動(dòng)生成的 ID 依賴于程序的結(jié)構(gòu),并且對代碼的更改時(shí)很敏感的。因此,強(qiáng)烈建議手動(dòng)設(shè)置 ID。

 stream.flatMap(_.split(" "))
      .uid("flapMap-001")  // 每個(gè)算子都指定一個(gè)uid,便于從保存點(diǎn)中恢復(fù)出算子的狀態(tài)
      .map((_, 1))
      .uid("map=001")
      .keyBy(0)
      .sum(1)
      .uid("sum-001")
      .print()

3)觸發(fā) SavePoint

//先啟動(dòng)Job
[root@hadoop101 bin]# ./flink run -c com.bjsxt.flink.state.TestSavepoints -d /home/Flink-Demo-1.0-SNAPSHOT.jar

//手動(dòng)觸發(fā)SavePoint,然后取消作業(yè)
[root@hadoop101 bin]# ./flink savepoint 6ecb8cfda5a5200016ca6b01260b94ce

[root@hadoop101 bin]# ./flink cancel 6ecb8cfda5a5200016ca6b01260b94ce

4)從保存點(diǎn)中恢復(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é)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI