第4課:Spark Streaming 事務處理徹底掌握

本期內(nèi)容:
  1. Exactly once容錯
  2. 數(shù)據(jù)輸出不重復

一. Spark Streaming中的事務場景 :
  在Spark Streaming中事務是指能夠處理且只處理一次,能夠輸出且只輸出一次.
  以銀行轉(zhuǎn)帳一次為例臊岸,A用戶轉(zhuǎn)賬給B用戶疮茄,事務的一致性就是保證A用戶能夠轉(zhuǎn)出且只能轉(zhuǎn)出一次,B用戶能夠收到且只能收到一次丰介。

二. Exactly once容錯:
  事務處理中如何保證能夠處理且只能處理一次舵抹,數(shù)據(jù)能夠輸出且只能輸出一次肪虎。
  數(shù)據(jù)丟失的主要場景如下:
    在Receiver收到數(shù)據(jù)且通過Driver的調(diào)度,Executor開始計算數(shù)據(jù)的時候如果Driver突然奔潰(導致Executor會被Kill掉)惧蛹,此時Executor會被Kill掉扇救,那么Executor中的數(shù)據(jù)就會丟失。
  1. 事務處理如下圖 :
    


   事務處理過程解析 :
      01. InputStream : 輸入數(shù)據(jù) 香嗓;
      02. Executor : 通過Receiver接收數(shù)據(jù)迅腔,當接收到數(shù)據(jù)后向Driver 匯報 ;
      03. Driver : 通過StreamingContext接收到數(shù)據(jù)會啟動Job進行操作 靠娱;

   2. 解決事務源數(shù)據(jù)接收的安全性 :
  


   事務處理解析 :
   01. Executor : 在Receiver接收來自Kafka數(shù)據(jù)首先通過BlockManager寫入內(nèi)存+磁盤或者通過WAL來保證數(shù)據(jù)的安全性沧烈;
   02. Executor : 通過Replication完成后產(chǎn)生Ack信號;
   03. Kafka : 確定收信息并讀取下一條數(shù)據(jù)像云,Kafka才會進行updateOffsets操作 锌雀;
   04. 通過WAL機制讓所有的數(shù)據(jù)通過類似HDFS的方式進行安全性容錯處理,從而解決Executor被Kill掉后導致數(shù)據(jù)丟失可以通過WAL機制恢復回來迅诬。

3. 解決Driver數(shù)據(jù)輸出的安全性 :
  數(shù)據(jù)的處理怎么保證有且僅有被處理一次腋逆?
  數(shù)據(jù)零丟失并不能保證Exactly Once,如果Receiver接收且保存起來后沒來得及更新updateOffsets時侈贷,就會導致數(shù)據(jù)被重復處理惩歉。
    


    01. 通過StreamingContext接收數(shù)據(jù)通過CheckPoint進行容錯 ;
    02. logging the updates : 通過記錄跟蹤所有生成RDD的轉(zhuǎn)換(transformations)也就是記錄每個RDD的lineage(血統(tǒng))來重新計算生成丟失的分區(qū)數(shù)據(jù) ;

 4. Exactly Once的事務處理 :
    01柬泽、 數(shù)據(jù)零丟失:必須有可靠的數(shù)據(jù)來源和可靠的Receiver慎菲,且整個應用程序的metadata必須進行checkpoint,且通過WAL來保證數(shù)據(jù)安全锨并;
    02露该、Spark Streaming 1.3的時候為了避免WAL的性能損失和實現(xiàn)Exactly Once而提供了Kafka Direct API,把Kafka作為文件存儲系統(tǒng)5谥蟆解幼!
    03、此時兼具有流的優(yōu)勢和文件系統(tǒng)的優(yōu)勢包警,Spark Streaming+Kafka就構建了完美的流處理世界D彀凇!害晦!
    04特铝、 數(shù)據(jù)不需要copy副本,不需要WAL性能損耗壹瘟,不需要Receiver鲫剿,所有的Executors直接通過kafka direct api直接消費數(shù)據(jù),直接管理Offset稻轨,所以也不會重復消費數(shù)據(jù)灵莲;
  
三. Spark Streaming數(shù)據(jù)輸出多次重寫及解決方案:
  1、 為什么會有這個問題殴俱,因為SparkStreaming在計算的時候基于SparkCore政冻,SparkCore天生會做以下事情導致SparkStreaming的結(jié)果(部分)重復輸出:
  1、Task重試线欲;
  2明场、慢任務推測;
  3询筏、Stage重復榕堰;
  4、Job重試嫌套;
等會導致數(shù)據(jù)的丟失。
2圾旨、 對應的解決方案:
  1踱讨、一個任務失敗就是job 失敗,設置spark.task.maxFailures次數(shù)為1砍的;
  2痹筛、設置spark.speculation為關閉狀態(tài)(因為慢任務推測其實非常消耗性能,所以關閉后可以顯著的提高Spark Streaming處理性能)
  3、Spark streaming on kafka的話帚稠,假如job失敗后可以設置kafka的auto.offset.reset為largest的方式會自動恢復job的執(zhí)行谣旁。

最后再次強調(diào):
  可以通過transform和foreachRDD基于業(yè)務邏輯代碼進行邏輯控制來實現(xiàn)數(shù)據(jù)不重復消費和輸出不重復!這二個方法類似于spark s的后門滋早,可以做任意想象的控制操作榄审!

備注:
資料來源于:DT_大數(shù)據(jù)夢工廠
更多私密內(nèi)容,請關注微信公眾號:DT_Spark
新浪微博:http://www.weibo.com/ilovepains
如果您對大數(shù)據(jù)Spark感興趣杆麸,可以免費聽由王家林老師每天晚上20:00開設的Spark永久免費公開課搁进,地址YY房間號:68917580

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昔头,隨后出現(xiàn)的幾起案子饼问,更是在濱河造成了極大的恐慌,老刑警劉巖揭斧,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莱革,死亡現(xiàn)場離奇詭異,居然都是意外死亡讹开,警方通過查閱死者的電腦和手機盅视,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萧吠,“玉大人左冬,你說我怎么就攤上這事≈叫停” “怎么了拇砰?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狰腌。 經(jīng)常有香客問我除破,道長,這世上最難降的妖魔是什么琼腔? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任瑰枫,我火速辦了婚禮,結(jié)果婚禮上丹莲,老公的妹妹穿的比我還像新娘光坝。我一直安慰自己,他們只是感情好甥材,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布盯另。 她就那樣靜靜地躺著,像睡著了一般洲赵。 火紅的嫁衣襯著肌膚如雪鸳惯。 梳的紋絲不亂的頭發(fā)上商蕴,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音芝发,去河邊找鬼绪商。 笑死,一個胖子當著我的面吹牛辅鲸,可吹牛的內(nèi)容都是我干的格郁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼瓢湃,長吁一口氣:“原來是場噩夢啊……” “哼理张!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绵患,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤雾叭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后落蝙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體织狐,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年筏勒,在試婚紗的時候發(fā)現(xiàn)自己被綠了移迫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡管行,死狀恐怖厨埋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捐顷,我是刑警寧澤荡陷,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站迅涮,受9級特大地震影響废赞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叮姑,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一唉地、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧传透,春花似錦耘沼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至托享,卻和暖如春骚烧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闰围。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工赃绊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羡榴。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓碧查,卻偏偏與公主長得像,于是被迫代替她去往敵國和親校仑。 傳聞我的和親對象是個殘疾皇子忠售,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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