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

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

spark筆記之RDD容錯機(jī)制之checkpoint

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

  1.checkpoint是什么

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

  (2)、Spark是擅長多步驟迭代的,同時擅長基于Job的復(fù)用,這個時候如果能夠?qū)υ?jīng)計算的過程產(chǎn)生的數(shù)據(jù)進(jìn)行復(fù)用,就可以極大的提升效率;

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

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

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

  2.checkpoint原理機(jī)制

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

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


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

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

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