Spark Checkpoint原理剖析

2022-05-17 19:43:23 字數 880 閱讀 2925

checkpoint,是spark 提供的乙個比較高階的功能。有的時候,比如說,我們的 spark 應用程式,特別的複雜,然後從初始的rdd開始,到最後拯個應用程式完成,有非常多的步驟,比如超過20個transformation 操作。而且整個應用執行的時間也特別的長,比如通常要執行1-5小時。

在上述的情況下,就比較適合使用checkpoint 功能。因為,對於特別複雜的 spark應用,有很高的風險,會出現某個要反覆使用的rdd,因為節點的故障,雖然之前持久化過,但是還是導致資料丟失了。那麼也就是說,出現失敗的時候,沒有容錯機制,所以當後面的 transformation 操作,又要使用到該rdd時,就會發現資料丟失了(cache manager),此時如果沒有進行容錯處理的話,那麼可能就又要重新計算一次資料。簡而言之,針對上訴情況,整個spark應用程式的容錯性很差。

所以,針對上訴的複雜spark 應用的問題(沒有容錯機制的問題)。就可以使用checkpoint 功能。

checkpoint的功能是什麼意思?checkpoint就是說,對於乙個複雜的rdd chain,我們如果擔心中間某些關鍵的,在後面會反覆幾次使用的rdd,可能會因為節點的故障,導致持久化資料的丟失,那麼就可以針對該rdd格外啟動 checkpoint 機制,實現容錯和高可用。

checkpoint 首先要呼叫 sparkcontext 的checkpoint() 方法,設定乙個容錯的檔案系統的目錄,比如說 hdfs ;然後,對rdd呼叫checkpoint() 方法。之後,在rdd所處的 job 執行結束之後,會啟動乙個單獨的 job,來將checkpoint 過的rdd資料寫入之前設定的檔案系統,進行高可用、容錯的類持久化操作。

那麼此時,即便在後面使用rdd時,他的持久話的數量,不小心丟失了,但是還是可以從它的checkpoint檔案中直接讀取資料,而不是重新計算。

樹鏈剖分原理

樹鏈剖分用一句話概括就是 把一棵樹剖分為若干條鏈,然後利用資料結構 樹狀陣列,sbt,splay,線段樹等等 去維護每一 條鏈,複雜度為o logn 那麼,樹鏈剖分的第一步當然是對樹進行輕重邊的劃分。定義size x 為以x為根的子樹節點個數,令v為u的兒子中size值最大的節點,那麼 u,v 就是...

border radius幾種寫法的原理剖析

border radius 40px border radius 40px 20px border radius 40px 20px border radius 40px 20px 10px 5px 今天主要是測試上面四種border radius的寫法。首先是第一種。這裡設定了乙個值,所以預設4個...

spark大資料 wordcount原理剖析

1 如下 package cn.spark.study.core import org.apache.spark.author yangchun description date created in 2020 05 04 15 41 object wordcountscala val pairs ...