spark從入門到放棄五十四:Spark Streaming(14)checkpoint

1.概述

每一個spark streaming 應(yīng)用正常來說都要7*24小時運轉(zhuǎn)的,這就是實時計算程序的特點。因為要持續(xù)不斷的對數(shù)據(jù)進行計算。因此,對實時計算的要求,應(yīng)該是必須能夠與應(yīng)用程序邏輯無關(guān)的失敗,進行容錯。
如果要實現(xiàn)這個目標(biāo),spark streaming 程序就必須將足夠的信息checkpoint 到容錯的存儲系統(tǒng)上,從而讓他能夠從失敗中進行恢復(fù)。有兩種數(shù)據(jù)需要進行checkpoint

2.1元數(shù)據(jù)checkpoint

將定義流式計算邏輯的信息,保存到容錯的存儲系統(tǒng)上,比如hdfs,當(dāng)運行spark streaming 應(yīng)用程序的Driver 進程所在節(jié)點失敗時,該信息可以進行恢復(fù)。元數(shù)據(jù)信息包括:
(1).配置信息 --創(chuàng)建spark Streaming 應(yīng)用程序的配置信息,比如sparkConf 中的信息。
(2)DStream 操作信息--定義Spark Streaming 應(yīng)用程序的計算邏輯的DStream 操作信息。
(3) 未處理的batch 信息--那些job 數(shù)據(jù)正在排隊,還沒有處理的batch 信息。

2.2數(shù)據(jù)checkpoint

將實時計算過程中產(chǎn)生的RDD 的數(shù)據(jù)保存到可靠的存儲系統(tǒng)中。
對于一些將多個batch的數(shù)據(jù)進聚合,有狀態(tài)的transform 操作,這是非常有用的。在這種transform 操作中,生成的RDD 依賴之前的batch 的RDD ,這個會導(dǎo)致隨著時間的推移,RDD 的依賴鏈條會變得越來越長。
要避免依賴鏈條變得越來越長,導(dǎo)致的一起變得越來越長的失敗恢復(fù)時間,有狀態(tài)的transformation 操作執(zhí)行過程中間產(chǎn)生的RDD 會定期的被checkpoint 到可靠的存儲系統(tǒng)上如hdfs ,從而削減RDD 的依賴鏈條,進而縮短失敗恢復(fù)時間。
一句話概括一下,元數(shù)據(jù)checkpoint 主要是為了從driver 中進行恢復(fù),而RDD checkpoing 主要是為了 使用到有狀態(tài)的transformation 操作時,能夠在其生產(chǎn)出的數(shù)據(jù)丟失時,進行快速的數(shù)據(jù)恢復(fù)。

3.如何啟用checkpoint 機制

1.對于有狀態(tài)的transform 操作,啟用checkpoint 機制,定期的將其生產(chǎn)的RDD 數(shù)據(jù)checkpoint 式比較簡單的。
可以通過配置一個容錯的,可靠的文件系統(tǒng)比如HDFS 目錄,來啟用checkpoint 機制,checkpoint 數(shù)據(jù)就會寫入到該目錄,使用StreamingContext 的checkpoint() 方法即可,然后就可以放心的使用有狀態(tài)的transformation 操作可
2.如果為了要從Driver 失敗進行恢復(fù),那么啟用checkpoint 機制,是比較復(fù)雜的需要改寫spark Streaming 應(yīng)用程序。
當(dāng)應(yīng)用程序第一次啟動的時候 需要創(chuàng)建一個新的Streaming context 并且調(diào)用其start 方法進行啟動當(dāng)driver 從失敗中恢復(fù)過來時,需要從checkpoint 目錄中記錄的元數(shù)據(jù)進行恢復(fù),恢復(fù)出來一個Streaming context .
歡迎關(guān)注,更多福利


這里寫圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容