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

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

成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為秦皇島等服務(wù)建站,秦皇島等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為秦皇島企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

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

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

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

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

  • checkpoint,用性能換可靠性。先做了緩沖后做了checkpoint,比如到HDFS那就是會(huì)從緩存存到HDFS上面進(jìn)行checkpoint操作!后面我們?cè)賹?duì)這個(gè)RDD進(jìn)行使用,然后其實(shí)它有個(gè)組件叫CacheManager,然后CacheManager會(huì)到BlockManager上面去找數(shù)據(jù),如果有就通過(guò)CacheManager拿到數(shù)據(jù),如果沒(méi)有就會(huì)從checkpoint的地方去拿數(shù)據(jù)

checkpoint原理:

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

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

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

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

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

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

說(shuō)一下checkpoint的使用

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

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

上述內(nèi)容就是如何理解troubleshooting 錯(cuò)誤的持久化方式以及checkpoint的使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章標(biāo)題:如何理解troubleshooting錯(cuò)誤的持久化方式以及checkpoint的使用
當(dāng)前地址:http://muchs.cn/article0/gpjjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、Google、企業(yè)網(wǎng)站制作自適應(yīng)網(wǎng)站、定制網(wǎng)站商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名