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

1.什么是事務(wù)劫拗?

? ? ? ?例如像銀行轉(zhuǎn)賬床三,A對(duì)B轉(zhuǎn)賬,B是否能收到多次轉(zhuǎn)賬杨幼,可能性不大撇簿;或者A轉(zhuǎn)給B的時(shí)候,A同樣費(fèi)用被扣了多次差购,B只收到一次四瘫,這樣也不可能。也就是說我們要做的事務(wù)級(jí)別的處理欲逃,簡(jiǎn)而言之這數(shù)據(jù)一定會(huì)被處理找蜜,且只被處理一次,能夠輸出且只能輸出一次稳析。

2.Spark Streaming整個(gè)運(yùn)行角度的基本的情況

? ? ? spark streaming寫程序基于Driver和Executor兩部分洗做,Driver的核心是StreamingContext,Receiver接收到的數(shù)據(jù)匯報(bào)給Driver(把元數(shù)據(jù)給Driver彰居,而且Driver生產(chǎn)的RDD只對(duì)元數(shù)據(jù)感興趣)诚纸,Driver為了數(shù)據(jù)安全進(jìn)行checkpoint(從數(shù)據(jù)角度講Block MeteData、DStreamGraph陈惰、Job)畦徘,接下來在Executor上執(zhí)行,當(dāng)然也可能在多個(gè)Executor上執(zhí)行抬闯。


3.接收數(shù)據(jù)的角度講

? ? ? ?數(shù)據(jù)不斷流進(jìn)Executor(InputStream的產(chǎn)生是在Driver上的井辆,屬于框架調(diào)度層面的,Executor中只有數(shù)據(jù)和RDD溶握,實(shí)際上講也沒有所謂的RDD杯缺,只有怎么算這件事,InputStream:只是從邏輯層面上講)。數(shù)據(jù)流進(jìn)了receiver睡榆,不斷接受這個(gè)數(shù)據(jù)萍肆,為了保證這個(gè)數(shù)據(jù)安全性廉赔,默認(rèn)情況下把數(shù)據(jù)不斷通過容錯(cuò)方式進(jìn)行處理,容錯(cuò)方式進(jìn)行處理:寫進(jìn)磁盤匾鸥,內(nèi)存同時(shí)有副本的形式,或者說wal碉纳。


? ? ? ?WAL機(jī)制:寫數(shù)據(jù)的時(shí)候勿负,先通過WAL寫入文件系統(tǒng)中,然后在存儲(chǔ)到Executor劳曹,Executor存儲(chǔ)到內(nèi)存或磁盤中奴愉,這是storagelevel規(guī)定。假設(shè)前面沒寫成功铁孵,后面一定不會(huì)存儲(chǔ)到Executor中锭硼,不存儲(chǔ)到Executor中就不能匯報(bào)給Driver,這個(gè)數(shù)據(jù)不會(huì)被處理蜕劝。

? ? ? 我們是否能一定確保數(shù)據(jù)的安全性呢檀头?假如我有1G數(shù)據(jù),在這次流的批次處理中需要處理岖沛,那我是否一定能處理這1G數(shù)據(jù)暑始,其實(shí)不一定,wal確實(shí)能把要寫入磁盤的數(shù)據(jù)婴削,就是進(jìn)行wal的數(shù)據(jù)廊镜,能夠保證它的安全,我們現(xiàn)在不考慮wal失敗的可能唉俗,wal失敗的可能不大嗤朴,因?yàn)樗话銓?hdfs之類的。其實(shí)Executor接受數(shù)據(jù)是一條一條接收的(從流的角度講)或者說從一個(gè)對(duì)象一個(gè)對(duì)象接收的虫溜,他會(huì)把數(shù)據(jù)在內(nèi)存中雹姊,Receiver把數(shù)據(jù)積累到一定程度時(shí)候,才寫到wal或者寫到磁盤衡楞。還沒有積累到一定程度容为,Receiver(Executor)失敗了怎么辦,這時(shí)還是會(huì)有部分?jǐn)?shù)據(jù)丟失一點(diǎn)(是的)寺酪。談不到備份坎背,因?yàn)檫€沒有準(zhǔn)備好數(shù)據(jù)塊,就是幾條數(shù)據(jù)

4.處理數(shù)據(jù)角度:

? ? ? 處理數(shù)據(jù)之前先checkpoint寄雀,checkpoint放到文件系統(tǒng)中得滤,處理之后也會(huì)進(jìn)行checkpoint,在保存一下自己狀態(tài)盒犹。spark streaming內(nèi)部工作起來懂更,絕對(duì)的核心是SparkContext眨业;spark streaming就2點(diǎn):就是StreamingContext,第一獲取數(shù)據(jù)沮协,第二產(chǎn)生作業(yè)StreamingContext沒有解決執(zhí)行問題龄捡,解決執(zhí)行問還需要SparkContext;

? ? ? 假設(shè)出現(xiàn)崩潰的時(shí)候慷暂,需要數(shù)據(jù)恢復(fù)聘殖,從Driver的角度進(jìn)行恢復(fù),Driver先checkpoint文件系統(tǒng)讀取進(jìn)來行瑞,而在內(nèi)部重新啟動(dòng)SparkContext奸腺。Driver里面恢復(fù)過數(shù)據(jù),重新構(gòu)建StreamingContext血久,其實(shí)也是構(gòu)建SparkContext突照,恢復(fù)產(chǎn)生的元數(shù)據(jù),再次產(chǎn)生RDD(恢復(fù)時(shí)候是基于上一次job或相對(duì)應(yīng)的job)再次提交到spark集群氧吐,在提交集群時(shí)候再次執(zhí)行讹蘑,另外一方面包含了Receiver恢復(fù),Receiver從新恢復(fù)在以前數(shù)據(jù)的基礎(chǔ)上接收數(shù)據(jù)筑舅,曾經(jīng)接受的數(shù)據(jù)它會(huì)通過wal之類的機(jī)制從磁盤重新恢復(fù)回來衔肢。


5.ExactlyOnce的事務(wù)處理:

1.數(shù)據(jù)零丟失:必須有可靠的數(shù)據(jù)來源和可靠的Receiver,且整個(gè)應(yīng)用程序的metadata必須進(jìn)行checkpoint豁翎,且通過wal來保證數(shù)據(jù)安全角骤;

2.Spark?Streaming 1.3的時(shí)候?yàn)榱吮苊釽AL的性能損失和實(shí)現(xiàn)Exactly -once而提供了Kafka Direct API,把Kafka作為文件存儲(chǔ)系統(tǒng)P陌0钭稹!此時(shí)兼具有流的優(yōu)勢(shì)和文件系統(tǒng)優(yōu)勢(shì)优烧,至此蝉揍,Spark Steaming + Kafka就構(gòu)建了完美的流處理世界!F杪Α又沾!所有的Executor通過KafkaAPI直接消費(fèi)數(shù)據(jù),直接管理offset熙卡,所以也不會(huì)重復(fù)消費(fèi)數(shù)據(jù)杖刷;(此時(shí)可以保證數(shù)據(jù)一定會(huì)被處理且一定會(huì)被處理一次)事務(wù)實(shí)現(xiàn)啦!2蛋滑燃!



備注:

資料來源于:DT_大數(shù)據(jù)夢(mèng)工廠(Spark發(fā)行版本定制)

更多私密內(nèi)容,請(qǐng)關(guān)注微信公眾號(hào):DT_Spark

如果您對(duì)大數(shù)據(jù)Spark感興趣颓鲜,可以免費(fèi)聽由王家林老師每天晚上20:00開設(shè)的Spark永久免費(fèi)公開課表窘,地址YY房間號(hào):68917580

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末典予,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乐严,更是在濱河造成了極大的恐慌瘤袖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昂验,死亡現(xiàn)場(chǎng)離奇詭異捂敌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)凛篙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栏渺,“玉大人呛梆,你說我怎么就攤上這事】恼铮” “怎么了填物?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)霎终。 經(jīng)常有香客問我滞磺,道長(zhǎng),這世上最難降的妖魔是什么莱褒? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任击困,我火速辦了婚禮,結(jié)果婚禮上广凸,老公的妹妹穿的比我還像新娘阅茶。我一直安慰自己,他們只是感情好谅海,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布脸哀。 她就那樣靜靜地躺著,像睡著了一般扭吁。 火紅的嫁衣襯著肌膚如雪撞蜂。 梳的紋絲不亂的頭發(fā)上邢疙,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天绳矩,我揣著相機(jī)與錄音苏遥,去河邊找鬼撑柔。 笑死儒陨,一個(gè)胖子當(dāng)著我的面吹牛像鸡,可吹牛的內(nèi)容都是我干的喧兄。 我是一名探鬼主播狼荞,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼由蘑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼闽寡!你這毒婦竟也來了代兵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤爷狈,失蹤者是張志新(化名)和其女友劉穎植影,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涎永,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡思币,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羡微。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谷饿。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妈倔,靈堂內(nèi)的尸體忽然破棺而出博投,到底是詐尸還是另有隱情,我是刑警寧澤盯蝴,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布毅哗,位于F島的核電站,受9級(jí)特大地震影響捧挺,放射性物質(zhì)發(fā)生泄漏虑绵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一闽烙、第九天 我趴在偏房一處隱蔽的房頂上張望翅睛。 院中可真熱鬧,春花似錦黑竞、人聲如沸宏所。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爬骤。三九已至,卻和暖如春莫换,著一層夾襖步出監(jiān)牢的瞬間霞玄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工拉岁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坷剧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓喊暖,卻偏偏與公主長(zhǎng)得像惫企,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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