Spark Streaming的Exactly-One的事務處理和不重復輸出徹底掌握

1.什么是事務?

? ? ? ?例如像銀行轉賬,A對B轉賬,B是否能收到多次轉賬,可能性不大;或者A轉給B的時候,A同樣費用被扣了多次,B只收到一次,這樣也不可能。也就是說我們要做的事務級別的處理,簡而言之這數據一定會被處理,且只被處理一次,能夠輸出且只能輸出一次。

2.Spark Streaming整個運行角度的基本的情況

? ? ? spark streaming寫程序基于Driver和Executor兩部分,Driver的核心是StreamingContext,Receiver接收到的數據匯報給Driver(把元數據給Driver,而且Driver生產的RDD只對元數據感興趣),Driver為了數據安全進行checkpoint(從數據角度講Block MeteData、DStreamGraph、Job),接下來在Executor上執行,當然也可能在多個Executor上執行。


3.接收數據的角度講

? ? ? ?數據不斷流進Executor(InputStream的產生是在Driver上的,屬于框架調度層面的,Executor中只有數據和RDD,實際上講也沒有所謂的RDD,只有怎么算這件事,InputStream:只是從邏輯層面上講)。數據流進了receiver,不斷接受這個數據,為了保證這個數據安全性,默認情況下把數據不斷通過容錯方式進行處理,容錯方式進行處理:寫進磁盤,內存同時有副本的形式,或者說wal。


? ? ? ?WAL機制:寫數據的時候,先通過WAL寫入文件系統中,然后在存儲到Executor,Executor存儲到內存或磁盤中,這是storagelevel規定。假設前面沒寫成功,后面一定不會存儲到Executor中,不存儲到Executor中就不能匯報給Driver,這個數據不會被處理。

? ? ? 我們是否能一定確保數據的安全性呢?假如我有1G數據,在這次流的批次處理中需要處理,那我是否一定能處理這1G數據,其實不一定,wal確實能把要寫入磁盤的數據,就是進行wal的數據,能夠保證它的安全,我們現在不考慮wal失敗的可能,wal失敗的可能不大,因為他一般寫.hdfs之類的。其實Executor接受數據是一條一條接收的(從流的角度講)或者說從一個對象一個對象接收的,他會把數據在內存中,Receiver把數據積累到一定程度時候,才寫到wal或者寫到磁盤。還沒有積累到一定程度,Receiver(Executor)失敗了怎么辦,這時還是會有部分數據丟失一點(是的)。談不到備份,因為還沒有準備好數據塊,就是幾條數據

4.處理數據角度:

? ? ? 處理數據之前先checkpoint,checkpoint放到文件系統中,處理之后也會進行checkpoint,在保存一下自己狀態。spark streaming內部工作起來,絕對的核心是SparkContext;spark streaming就2點:就是StreamingContext,第一獲取數據,第二產生作業StreamingContext沒有解決執行問題,解決執行問還需要SparkContext;

? ? ? 假設出現崩潰的時候,需要數據恢復,從Driver的角度進行恢復,Driver先checkpoint文件系統讀取進來,而在內部重新啟動SparkContext。Driver里面恢復過數據,重新構建StreamingContext,其實也是構建SparkContext,恢復產生的元數據,再次產生RDD(恢復時候是基于上一次job或相對應的job)再次提交到spark集群,在提交集群時候再次執行,另外一方面包含了Receiver恢復,Receiver從新恢復在以前數據的基礎上接收數據,曾經接受的數據它會通過wal之類的機制從磁盤重新恢復回來。


5.ExactlyOnce的事務處理:

1.數據零丟失:必須有可靠的數據來源和可靠的Receiver,且整個應用程序的metadata必須進行checkpoint,且通過wal來保證數據安全;

2.Spark?Streaming 1.3的時候為了避免WAL的性能損失和實現Exactly -once而提供了Kafka Direct API,把Kafka作為文件存儲系統!!!此時兼具有流的優勢和文件系統優勢,至此,Spark Steaming + Kafka就構建了完美的流處理世界!!!所有的Executor通過KafkaAPI直接消費數據,直接管理offset,所以也不會重復消費數據;(此時可以保證數據一定會被處理且一定會被處理一次)事務實現啦!!!



備注:

資料來源于:DT_大數據夢工廠(Spark發行版本定制)

更多私密內容,請關注微信公眾號:DT_Spark

如果您對大數據Spark感興趣,可以免費聽由王家林老師每天晚上20:00開設的Spark永久免費公開課,地址YY房間號:68917580

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容