溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何理解troubleshooting 錯誤的持久化方式以及checkpoint的使用

發(fā)布時間:2021-11-10 17:34:08 來源:億速云 閱讀:144 作者:柒染 欄目:云計算

本篇文章為大家展示了如何理解troubleshooting 錯誤的持久化方式以及checkpoint的使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

        來說下CheckPoint,有時候它對故障會產(chǎn)生效果,它最起效果的時候是什么時候呢?如果緩存BlockManager會根據(jù)你的緩存策略去把數(shù)據(jù)存到內(nèi)存或者磁盤!持久化,大多數(shù)時候,都是會正常工作的。但是就怕,有些時候,會出現(xiàn)意外。比如說,緩存在內(nèi)存中的數(shù)據(jù),可能莫名其妙就丟失掉了。Executor進程掛掉了?;蛘哒f,存儲在磁盤文件中的數(shù)據(jù),莫名其妙就沒了,文件被誤刪了。企業(yè)雖然沒碰到過,但是有可能。

  • 出現(xiàn)上述情況的時候,接下來,如果要對這個RDD執(zhí)行某些操作,可能會發(fā)現(xiàn)RDD的某個partition找不到了。對消失的partition重新計算,計算完以后再緩存和使用。有些時候,計算某個RDD,可能是極其耗時的??赡躌DD之前有大量的父RDD。那么如果你要重新計算一個partition,可能要重新計算之前所有的父RDD對應(yīng)的partition。

  • 這種情況下,就可以選擇對這個RDD進行checkpoint,以防萬一。進行checkpoint,就是說,會將RDD的數(shù)據(jù),持久化一份到容錯的文件系統(tǒng)上(比如hdfs)。在對這個RDD進行計算的時候,如果發(fā)現(xiàn)它的緩存數(shù)據(jù)不見了。優(yōu)先就是先找一下有沒有checkpoint數(shù)據(jù)(到hdfs上面去找)。如果有的話,就使用checkpoint數(shù)據(jù)了。不至于說是去重新計算。

  • checkpoint,其實就是可以作為是cache的一個備胎。如果cache失效了,checkpoint就可以上來使用了。checkpoint有利有弊,利在于,提高了spark作業(yè)的可靠性,一旦發(fā)生問題,還是很可靠的,不用重新計算大量的rdd;但是弊在于,進行checkpoint操作的時候,也就是將rdd數(shù)據(jù)寫入hdfs中的時候,還是會消耗性能的。

  • checkpoint,用性能換可靠性。先做了緩沖后做了checkpoint,比如到HDFS那就是會從緩存存到HDFS上面進行checkpoint操作!后面我們再對這個RDD進行使用,然后其實它有個組件叫CacheManager,然后CacheManager會到BlockManager上面去找數(shù)據(jù),如果有就通過CacheManager拿到數(shù)據(jù),如果沒有就會從checkpoint的地方去拿數(shù)據(jù)

checkpoint原理:

  1. 在代碼中,用SparkContext,設(shè)置一個checkpoint目錄,可以是一個容錯文件系統(tǒng)的目錄,比如hdfs;

  2. 在代碼中,對需要進行checkpoint的rdd,執(zhí)行RDD.checkpoint();

  3. RDDCheckpointData(spark內(nèi)部的API),接管你的RDD,會標(biāo)記為marked for checkpoint,準(zhǔn)備進行checkpoint

  4. 你的job運行完之后,會調(diào)用一個finalRDD.doCheckpoint()方法,會順著rdd lineage,回溯掃描,發(fā)現(xiàn)有標(biāo)記為待checkpoint的rdd,就會進行二次標(biāo)記,inProgressCheckpoint,正在接受checkpoint操作

  5. job執(zhí)行完之后,就會啟動一個內(nèi)部的新job,去將標(biāo)記為inProgressCheckpoint的rdd的數(shù)據(jù),都寫入hdfs文件中。(備注,如果rdd之前cache過,會直接從緩存中獲取數(shù)據(jù),寫入hdfs中;如果沒有cache過,那么就會重新計算一遍這個rdd,再checkpoint)

  6. 將checkpoint過的rdd之前的依賴rdd,改成一個CheckpointRDD*,強制改變你的rdd的lineage。后面如果rdd的cache數(shù)據(jù)獲取失敗,直接會通過它的上游CheckpointRDD,去容錯的文件系統(tǒng),比如hdfs中,獲取checkpoint的數(shù)據(jù)。

說一下checkpoint的使用

  1. SparkContext,設(shè)置checkpoint目錄

  2. 對RDD執(zhí)行checkpoint操作

上述內(nèi)容就是如何理解troubleshooting 錯誤的持久化方式以及checkpoint的使用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI