關(guān)于Spark RDD API中的Checkpointing

什么是Checkpointing

Checkpointing可以將RDD從其依賴關(guān)系中抽出來,保存到可靠的存儲系統(tǒng)(例如HDFS,S3等), 即它可以將數(shù)據(jù)和元數(shù)據(jù)保存到檢查指向目錄中。 因此,在程序發(fā)生崩潰的時候,Spark可以恢復此數(shù)據(jù),并從停止的任何地方開始。

Checkpointing分為兩類:

  • reliable,容錯性優(yōu)先。這種類型的檢查點可確保數(shù)據(jù)永久存儲,如在HDFS或其他分布式文件系統(tǒng)上。 這也意味著數(shù)據(jù)通常會在網(wǎng)絡(luò)中復制,這會降低檢查點的運行速度
  • local,性能優(yōu)先。 RDD持久保存到執(zhí)行程序中的本地存儲。 因此,數(shù)據(jù)寫得更快,但本地存儲也不是完全可靠的,一旦數(shù)據(jù)丟失,工作將無法恢復。==一般用于需要定期截取且擁有較長的lineage關(guān)系的RDD==,例如,GraphX。

開發(fā)人員可以是來 ==RDD.checkpoint()== 方法來設(shè)置檢查點。
在使用檢查點之前,必須使用 SparkContext.setCheckpointDir(directory: String) 方法設(shè)置檢查點目錄。

<font color=darkb><b>Checkpointing waits until the end of a job, and launches another job to finish checkpoint. An RDD which needs to be checkpointed will be computed twice; thus it is suggested to do a rdd.cache() before rdd.checkpoint().

強烈建議在啟用RDD檢查點之前,先將其persist到內(nèi)存中,否則,在它存到文件之前,需要重新計算一次。

為什么使用Checkpointing

RDD的檢查點機制就好比Hadoop將中間計算值存儲到磁盤,即使計算中出現(xiàn)了故障,我們也可以輕松地從中恢復。通過對 RDD 啟動檢查點機制可以實現(xiàn)容錯和高可用。

  • 在Spark Streaming程序中,如果某些數(shù)據(jù)已經(jīng)在隊列中等待處理,由于某些原因我們的應用程序崩潰,當我們再次啟動時,則無需再次讀取這些數(shù)據(jù),并且數(shù)據(jù)不會丟失。

  • 如果我們的應用程序正在使用任何有狀態(tài)操作,那么檢查點是必需的,否則一旦應用程序崩潰,所有狀態(tài)都將丟失。

哪些RDD需要使用Checkpointing

  • 計算需要很長時間
  • 計算鏈太長了
  • 依賴于于太多的父RDD

Checkpointing和Cache的區(qū)別

Cache和Checkpointing之間存在顯著差異。Cache可以物理化RDD并將其保留在內(nèi)存(和/或磁盤)中。但是它會==記住RDD的依賴關(guān)系(lineage)==,因此就算存在節(jié)點故障導致部分緩存的RDD丟失,它們可以被重新生成。

Checkpointing僅將RDD數(shù)據(jù)保存到HDFS文件中,而==忽略依賴關(guān)系==。

此外,rdd.persist(StorageLevel.DISK_ONLY)也與checkpoint不同。通過前者可以將RDD分區(qū)持久化到磁盤,分區(qū)由blockManager管理。一旦驅(qū)動程序完成,這意味著CoarseGrainedExecutorBackend所在的線程停止,blockManager將停止,緩存到磁盤的RDD將被刪除(blockManager使用的本地文件將被刪除)。但檢查點會將RDD保留到HDFS或本地目錄。如果沒有手動刪除,它們將始終位于磁盤上,因此下一個驅(qū)動程序可以使用它們。

參考資料

cache and checkpoint
Checkpointing in Spark
Apache Spark: Caching and Checkpointing Under the Hood
Spark RDD Checkpointing

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容