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

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

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

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

  1.checkpoint是什么

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

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

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

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

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

  2.checkpoint原理機(jī)制

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

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


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

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

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