Spark- Checkpoint原理剖析
Checkpoint,是Spark 提供的一個比較高級的功能。有的時候,比如說,我們的 Spark 應(yīng)用程序,特別的復(fù)雜,然后從初始的RDD開始,到最后拯個應(yīng)用程序完成,有非常多的步驟,比如超過20個transformation 操作。而且整個應(yīng)用運行的時間也特別的長,比如通常要運行1-5小時。
在上述的情況下,就比較適合使用checkpoint 功能。因為,對于特別復(fù)雜的 Spark應(yīng)用,有很高的風險,會出現(xiàn)某個要反復(fù)使用的RDD,因為節(jié)點的故障,雖然之前持久化過,但是還是導(dǎo)致數(shù)據(jù)丟失了。那么也就是說,出現(xiàn)失敗的時候,沒有容錯機制,所以當后面的 transformation 操作,又要使用到該RDD時,就會發(fā)現(xiàn)數(shù)據(jù)丟失了(Cache Manager),此時如果沒有進行容錯處理的話,那么可能就又要重新計算一次數(shù)據(jù)。簡而言之,針對上訴情況,整個Spark應(yīng)用程序的容錯性很差。
所以,針對上訴的復(fù)雜Spark 應(yīng)用的問題(沒有容錯機制的問題)。就可以使用checkpoint 功能。
checkpoint的功能是什么意思?checkpoint就是說,對于一個復(fù)雜的RDD chain,我們?nèi)绻麚闹虚g某些關(guān)鍵的,在后面會反復(fù)幾次使用的RDD,可能會因為節(jié)點的故障,導(dǎo)致持久化數(shù)據(jù)的丟失,那么就可以針對該RDD格外啟動 checkpoint 機制,實現(xiàn)容錯和高可用。
checkpoint 首先要調(diào)用 SparkContext 的Checkpoint() 方法,設(shè)置一個容錯的文件系統(tǒng)的目錄,比如說 HDFS ;然后,對RDD調(diào)用checkpoint() 方法。之后,在RDD所處的 job 運行結(jié)束之后,會啟動一個單獨的 job,來將checkpoint 過的RDD數(shù)據(jù)寫入之前設(shè)置的文件系統(tǒng),進行高可用、容錯的類持久化操作。
那么此時,即便在后面使用RDD時,他的持久話的數(shù)量,不小心丟失了,但是還是可以從它的checkpoint文件中直接讀取數(shù)據(jù),而不是重新計算。
?
轉(zhuǎn)載于:https://www.cnblogs.com/RzCong/p/7721889.html
總結(jié)
以上是生活随笔為你收集整理的Spark- Checkpoint原理剖析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react+dva+antd接口调用方式
- 下一篇: Lambda表达式常用代码示例