RDD 中的檢查點機制的理解

2021-10-05 13:47:16 字數 1006 閱讀 3272

檢查點機制目的: 資料的持久化 + 安全性(hdfs)

檢查點機制適用場合

dga 中的 lineage過長

在寬依賴上設定 檢查點 更好

檢查點

將 rdd 的資料進行持久化到檔案系統(hdfs)中

問題:checkpoint 執行跟 cache 一樣麼?

**如下:(這裡的 hdfs 路徑注意自己本地 hosts 檔案要有對映關係)

@test

def checkpointdemo(): unit =

結果:

1[1588064924441]

2[1588064924442]

1[1588064924730]

2[1588064924730]

2[1588064924730]

1[1588064924730]

分析:

發現前兩次輸出結果不一致,從cache理解角度,三次輸出應該都是相同的。因此可以發現, checkpoint 執行方式跟 cache 是不同的

checkpoint 寫入流程:

在遇到 action 運算元的時候,開始對資料進行處理,當資料結束後,才從後往前一次檢查每乙個 rdd ,看看需不需要進行 checkpoint ,如果需要,則執行下一步

在從頭開始一次執行運算元,知道設定了 checkpoint 的 rdd ,然後將資料儲存在 hdfs 上(本質上是重新啟動乙個執行緒,進行寫執行運算元流程並存資料到hdfs上)

清楚 checkpoint 的 rdd 中所有依賴(斷開父依賴)

小技巧:

一般在 checkpoint 之前都要進行 cache 或者 persist 。仔細想想哦

因為是建立新的執行緒,從頭開始執行運算元,當我們啟用 cache 的時候,直接從 cache 中讀取資料進行寫入即可

RDD的檢查點(checkpoint)機制

rdd的快取能夠在第一次計算完成後,將計算結果儲存到記憶體 本地檔案系統或者tachyon中。通過快取,spark避免了rdd上的重複計算,能夠極大地提公升計算速度。但是,如果快取丟失了,則需要重新計算。如果計算特別複雜或者計算耗時特別多,那麼快取丟失對於整個job的影響是不容忽視的。為了避免快取丟...

spark streaming 檢查點機制

乙個streaming應用程式要求7天24小時不間斷執行,因此必須適應各種導致應用程式失敗的場景。spark streaming的檢查點具有容錯機制,有足夠的資訊能夠支援故障恢復。支援兩種資料型別的檢查點 元資料檢查點和資料檢查點。1 元資料檢查點,在類似hdfs的容錯儲存上,儲存streaming...

RDD 八 快取與檢查點

rdd通過persist方法或cache方法可以將前面的計算結果快取,預設情況下persist 會把資料以序列化的形式快取在jvm 的堆空間中。但是並不是這兩個方法被呼叫時立即快取,而是觸發後面的action時,該rdd的計算結果將會被快取在計算節點的記憶體中,並供後面重用。示例如下 def mai...