教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

spark筆記之RDD容錯機制之checkpoint

更新時間:2018年09月11日15時50分 來源:傳智播客 瀏覽次數(shù):

  1.checkpoint是什么

  (1)、Spark 在生產環(huán)境下經常會面臨transformation的RDD非常多(例如一個Job中包含1萬個RDD)或者具體transformation的RDD本身計算特別復雜或者耗時(例如計算時長超過1個小時),這個時候就要考慮對計算結果數(shù)據(jù)持久化保存;

  (2)、Spark是擅長多步驟迭代的,同時擅長基于Job的復用,這個時候如果能夠對曾經計算的過程產生的數(shù)據(jù)進行復用,就可以極大的提升效率;

  (3)、如果采用persist把數(shù)據(jù)放在內存中,雖然是快速的,但是也是最不可靠的;如果把數(shù)據(jù)放在磁盤上,也不是完全可靠的!例如磁盤會損壞,系統(tǒng)管理員可能清空磁盤。

  (4)、Checkpoint的產生就是為了相對而言更加可靠的持久化數(shù)據(jù),在Checkpoint的時候可以指定把數(shù)據(jù)放在本地,并且是多副本的方式,但是在生產環(huán)境下是放在HDFS上,這就天然的借助了HDFS高容錯、高可靠的特征來完成了最大化的可靠的持久化數(shù)據(jù)的方式;

  假如進行一個1萬個算子操作,在9000個算子的時候persist,數(shù)據(jù)還是有可能丟失的,但是如果checkpoint,數(shù)據(jù)丟失的概率幾乎為0。

  2.checkpoint原理機制

  (1)當RDD使用cache機制從內存中讀取數(shù)據(jù),如果數(shù)據(jù)沒有讀到,會使用checkpoint機制讀取數(shù)據(jù)。此時如果沒有checkpoint機制,那么就需要找到父RDD重新計算數(shù)據(jù)了,因此checkpoint是個很重要的容錯機制。checkpoint就是對于一個RDD chain(鏈)如果后面需要反復使用某些中間結果RDD,可能因為一些故障導致該中間數(shù)據(jù)丟失,那么就可以針對該RDD啟動checkpoint機制,使用checkpoint首先需要調用sparkContext的setCheckpoint方法,設置一個容錯文件系統(tǒng)目錄,比如hdfs,然后對RDD調用checkpoint方法。之后在RDD所處的job運行結束后,會啟動一個單獨的job來將checkpoint過的數(shù)據(jù)寫入之前設置的文件系統(tǒng)持久化,進行高可用。所以后面的計算在使用該RDD時,如果數(shù)據(jù)丟失了,但是還是可以從它的checkpoint中讀取數(shù)據(jù),不需要重新計算。

  (2)persist或者cache與checkpoint的區(qū)別在于,前者持久化只是將數(shù)據(jù)保存在BlockManager中但是其lineage是不變的,但是后者checkpoint執(zhí)行完后,rdd已經沒有依賴RDD,只有一個checkpointRDD,checkpoint之后,RDD的lineage就改變了。persist或者cache持久化的數(shù)據(jù)丟失的可能性更大,因為可能磁盤或內存被清理,但是checkpoint的數(shù)據(jù)通常保存到hdfs上,放在了高容錯文件系統(tǒng)。


作者:傳智播客云計算大數(shù)據(jù)培訓學院

首發(fā):http://http://cloud.itcast.cn/

0 分享到:
和我們在線交談!