Checkpoint的執行原理和原始碼實現

2022-05-04 00:57:09 字數 2482 閱讀 8524

checkpoint 到底是什麼和需要用 checkpoint 解決什麼問題:

spark 在生產環境下經常會面臨 transformation 的 rdd 非常多(例如乙個job 中包含1萬個rdd) 或者是具體的 transformation 產生的rdd 本身計算特別複雜和耗時(例如計算時常超過1個小時) , 可能業務比較複雜,此時我們必需考慮對計算結果的持久化。

spark 是擅長多步驟迭代,同時擅長基於 job 的復用。這個時候如果可以對計算的過程進行復用,就可以極大的提公升效率。因為有時候有共同的步驟,就可以免卻重複計算的時間。

如果採用persists把資料在記憶體中的話,雖然最快速但是也是最不可靠的;如果放在磁碟上也不是完全可靠的,例如磁碟會損壞,系統管理員可能會清空磁碟。

checkpoint 的產生就是為了相對而言更加可靠的持久化資料,在 checkpoint 可以指定把資料放在本地並且是多副本的方式,但是在正常生產環境下放在 hdfs 上,這就天然的借助hdfs 高可靠的特徵來完成最大化的可靠的持久化資料的方式

checkpoint 是為了最大程度保證絕對可靠的復用 rdd計算資料的 spark 的高階功能,通過 checkpoint 我們通過把資料持久化到 hdfs 上來保證資料的最大程度的安任性

checkpoint 就是針對整個rdd 計算鏈條中特別需要資料持久化的環節(後面會反覆使用當前環節的rdd) 開始基於hdfs 等的資料持久化復用策略,通過對 rdd 啟動 checkpoint 機制來實現容錯和高可用

1、rdd.iterator 方法,它會先在快取中檢視資料 (內部會檢視 checkpoint 有沒有相關資料),然後再從 checkpoint 中檢視資料

checkpoint 有兩種方法,一種是 reliably 和 一種是 locally

[下圖是 rdd.scala 中的 ischeckpointed 變數和 ischeckpointedandmaterialized 方法]

2、通過呼叫 sparkcontext.setcheckpointdir 方法來指定進行 checkpoint 操作的 rdd 把資料放在那裡,在生產集群中是放在 hdfs 上的,同時為了提高效率在進行 checkpoint 的時候可以指定很多目錄

3、在進行 rdd 的 checkpoint 的時候,其所依賴的所有 rdd 都會清空掉;官方建議如果要進行 checkpoint 時,必需先快取在記憶體中。但實際可以考慮快取在本地磁碟上或者是第三方元件,e.g. taychon 上。在進行 checkpoint 之前需要通過 sparkconetxt 設定 checkpoint 的資料夾

[下圖是 rdd.scala 中的 checkpoint 方法]

4、作為最佳實踐,一般在進行 checkpoint 方法呼叫前都要進行 persists 來把當前 rdd 的資料持久化到記憶體或者是磁碟上,這是因為 checkpoint 是 lazy 級別,必需有 job 的執行且在job 執行完成後才會從後往前回溯哪個 rdd 進行了checkpoint 標記,然後對該標記了要進行 checkpoint 的 rdd 新啟動乙個job 執行具體 checkpoint 的過程;

5、checkpoint 改變了 rdd 的 lineage

6、當我們呼叫了checkpoint 方法要對rdd 進行checkpoint 操作的話,此時框架會自動生成 rddcheckpointdata

7、當 rdd 上執行乙個job 後就會立即觸發 rddcheckpointdata 中的 checkpoint 方法,在其內部會呼叫 docheckpoint( )方法,實際上在生產環境上會呼叫 reliablerddcheckpointdata 的 docheckpoint( )方法

8、在生產環境下會導致 reliablerddcheckpointdata 的 writerddtocheckpointdirectory 的呼叫,而在 writerddtocheckpointdirectory 方法內部會觸發runjob 來執行當前的rdd 中的資料寫到checkpoint 的目錄中,同時會產生reliablecheckpointrdd 例項

Checkpoint的原理剖析

作用 spark的容錯機制,避免重新計算資料 1.如何進行checkpoint?sparkcontext.setcheckpointdir rdd.checkpoint 具體轉變 對rdd呼叫checkpoint 方法之後,它就接受了rddcheckpointdata物件的管理 rddcheckpo...

在Condor中執行Checkpoint

condor執行有多種模式,不同的模式有各自不同的功能。在standard模式下,condor提供檢查點和遠端系統呼叫。這些特性使得任務的執行更加可靠並且允許任務從機群中的任何地點以相同方式訪問資源。要把乙個程式配置成標準模式任務,就必須使用condor compile進行重連線。大多數程式都能配置...

CheckPoint執行機制詳解

本文將對checkpoint的執行流程逐步拆解進行分析 checkpointcoordinator 整個checkpoint的發起者,由jobmanger管理著 source 資料來源 sink 資料sink map 運算元 hdfs checkpoint儲存地 第一步 checkpoint coo...