關(guān)于Spark RDD API中的Checkpointing

什么是Checkpointing

Checkpointing可以將RDD從其依賴關(guān)系中抽出來捉偏,保存到可靠的存儲系統(tǒng)(例如HDFS盐欺,S3等), 即它可以將數(shù)據(jù)和元數(shù)據(jù)保存到檢查指向目錄中。 因此柏靶,在程序發(fā)生崩潰的時候,Spark可以恢復(fù)此數(shù)據(jù)溃论,并從停止的任何地方開始屎蜓。

Checkpointing分為兩類:

  • reliable,容錯性優(yōu)先钥勋。這種類型的檢查點(diǎn)可確保數(shù)據(jù)永久存儲炬转,如在HDFS或其他分布式文件系統(tǒng)上。 這也意味著數(shù)據(jù)通常會在網(wǎng)絡(luò)中復(fù)制算灸,這會降低檢查點(diǎn)的運(yùn)行速度
  • local扼劈,性能優(yōu)先。 RDD持久保存到執(zhí)行程序中的本地存儲菲驴。 因此荐吵,數(shù)據(jù)寫得更快,但本地存儲也不是完全可靠的赊瞬,一旦數(shù)據(jù)丟失先煎,工作將無法恢復(fù)。==一般用于需要定期截取且擁有較長的lineage關(guān)系的RDD==巧涧,例如薯蝎,GraphX。

開發(fā)人員可以是來 ==RDD.checkpoint()== 方法來設(shè)置檢查點(diǎn)谤绳。
在使用檢查點(diǎn)之前占锯,必須使用 SparkContext.setCheckpointDir(directory: String) 方法設(shè)置檢查點(diǎn)目錄。

<font color=darkb><b>Checkpointing waits until the end of a job, and launches another job to finish checkpoint. An RDD which needs to be checkpointed will be computed twice; thus it is suggested to do a rdd.cache() before rdd.checkpoint().

強(qiáng)烈建議在啟用RDD檢查點(diǎn)之前闷供,先將其persist到內(nèi)存中烟央,否則,在它存到文件之前歪脏,需要重新計(jì)算一次疑俭。

為什么使用Checkpointing

RDD的檢查點(diǎn)機(jī)制就好比Hadoop將中間計(jì)算值存儲到磁盤,即使計(jì)算中出現(xiàn)了故障婿失,我們也可以輕松地從中恢復(fù)钞艇。通過對 RDD 啟動檢查點(diǎn)機(jī)制可以實(shí)現(xiàn)容錯和高可用啄寡。

  • 在Spark Streaming程序中,如果某些數(shù)據(jù)已經(jīng)在隊(duì)列中等待處理哩照,由于某些原因我們的應(yīng)用程序崩潰挺物,當(dāng)我們再次啟動時,則無需再次讀取這些數(shù)據(jù)飘弧,并且數(shù)據(jù)不會丟失识藤。

  • 如果我們的應(yīng)用程序正在使用任何有狀態(tài)操作,那么檢查點(diǎn)是必需的次伶,否則一旦應(yīng)用程序崩潰痴昧,所有狀態(tài)都將丟失。

哪些RDD需要使用Checkpointing

  • 計(jì)算需要很長時間
  • 計(jì)算鏈太長了
  • 依賴于于太多的父RDD

Checkpointing和Cache的區(qū)別

Cache和Checkpointing之間存在顯著差異冠王。Cache可以物理化RDD并將其保留在內(nèi)存(和/或磁盤)中赶撰。但是它會==記住RDD的依賴關(guān)系(lineage)==,因此就算存在節(jié)點(diǎn)故障導(dǎo)致部分緩存的RDD丟失柱彻,它們可以被重新生成豪娜。

Checkpointing僅將RDD數(shù)據(jù)保存到HDFS文件中,而==忽略依賴關(guān)系==哟楷。

此外瘤载,rdd.persist(StorageLevel.DISK_ONLY)也與checkpoint不同。通過前者可以將RDD分區(qū)持久化到磁盤吓蘑,分區(qū)由blockManager管理惕虑。一旦驅(qū)動程序完成坟冲,這意味著CoarseGrainedExecutorBackend所在的線程停止磨镶,blockManager將停止,緩存到磁盤的RDD將被刪除(blockManager使用的本地文件將被刪除)健提。但檢查點(diǎn)會將RDD保留到HDFS或本地目錄琳猫。如果沒有手動刪除,它們將始終位于磁盤上私痹,因此下一個驅(qū)動程序可以使用它們脐嫂。

參考資料

cache and checkpoint
Checkpointing in Spark
Apache Spark: Caching and Checkpointing Under the Hood
Spark RDD Checkpointing

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市紊遵,隨后出現(xiàn)的幾起案子账千,更是在濱河造成了極大的恐慌,老刑警劉巖暗膜,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匀奏,死亡現(xiàn)場離奇詭異,居然都是意外死亡学搜,警方通過查閱死者的電腦和手機(jī)娃善,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門论衍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聚磺,你說我怎么就攤上這事坯台。” “怎么了瘫寝?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵蜒蕾,是天一觀的道長。 經(jīng)常有香客問我焕阿,道長滥搭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任捣鲸,我火速辦了婚禮瑟匆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘栽惶。我一直安慰自己愁溜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布外厂。 她就那樣靜靜地躺著冕象,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汁蝶。 梳的紋絲不亂的頭發(fā)上渐扮,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音掖棉,去河邊找鬼墓律。 笑死,一個胖子當(dāng)著我的面吹牛幔亥,可吹牛的內(nèi)容都是我干的耻讽。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼帕棉,長吁一口氣:“原來是場噩夢啊……” “哼针肥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起香伴,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤慰枕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后即纲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體具帮,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了匕坯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片束昵。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖葛峻,靈堂內(nèi)的尸體忽然破棺而出锹雏,到底是詐尸還是另有隱情,我是刑警寧澤术奖,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布礁遵,位于F島的核電站,受9級特大地震影響采记,放射性物質(zhì)發(fā)生泄漏佣耐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一唧龄、第九天 我趴在偏房一處隱蔽的房頂上張望兼砖。 院中可真熱鬧,春花似錦既棺、人聲如沸讽挟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耽梅。三九已至,卻和暖如春胖烛,著一層夾襖步出監(jiān)牢的瞬間眼姐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工佩番, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留众旗,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓答捕,卻偏偏與公主長得像逝钥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拱镐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348