Spark- Checkpoint原理剖析
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文件中直接讀取數據,而不是重新計算。
?
轉載于:https://www.cnblogs.com/RzCong/p/7721889.html
總結
以上是生活随笔為你收集整理的Spark- Checkpoint原理剖析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react+dva+antd接口调用方式
- 下一篇: Lambda表达式常用代码示例