第12課:Spark Streaming源碼解讀之Executor容錯(cuò)安全性

一臊诊、Spark Streaming 數(shù)據(jù)安全性的考慮:

Spark Streaming不斷的接收數(shù)據(jù),并且不斷的產(chǎn)生Job斜脂,不斷的提交Job給集群運(yùn)行抓艳。所以這就涉及到一個(gè)非常重要的問題數(shù)據(jù)安全性。

Spark Streaming是基于Spark Core之上的帚戳,如果能夠確保數(shù)據(jù)安全可好的話玷或,在Spark Streaming生成Job的時(shí)候里面是基于RDD,即使運(yùn)行的時(shí)候出現(xiàn)問題片任,那么Spark Streaming也可以借助Spark Core的容錯(cuò)機(jī)制自動(dòng)容錯(cuò)偏友。

對(duì)Executor容錯(cuò)主要是對(duì)數(shù)據(jù)的安全容錯(cuò)

為啥這里不考慮對(duì)數(shù)據(jù)計(jì)算的容錯(cuò):計(jì)算的時(shí)候Spark Streaming是借助于Spark Core之上的容錯(cuò)的,所以天然就是安全可靠的对供。

Executor容錯(cuò)方式:

1. 最簡(jiǎn)單的容錯(cuò)是副本方式位他,基于底層BlockManager副本容錯(cuò),也是默認(rèn)的容錯(cuò)方式产场。

2.WAL日志方式

3. 接收到數(shù)據(jù)之后不做副本鹅髓,支持?jǐn)?shù)據(jù)重放,所謂重放就是支持反復(fù)讀取數(shù)據(jù)京景。

BlockManager備份:

默認(rèn)在內(nèi)存中兩份副本窿冯,也就是Spark Streaming的Receiver接收到數(shù)據(jù)之后存儲(chǔ)的時(shí)候指定StorageLevel為MEMORY_AND_DISK_SER_2,底層存儲(chǔ)是交給BlockManager确徙,BlockManager的語義確保了如果指定了兩份副本醒串,一般都在內(nèi)存中执桌。所以至少兩個(gè)Executor中都會(huì)有數(shù)據(jù)。

Receiver將數(shù)據(jù)交給BlockManger是由ReceiveredBlockHandler來處理的厦凤,有兩種ReceiveredBlockHandler的實(shí)現(xiàn):

1.WriteAheadLogBasedBlockHandler

2.BlockManagerBasedBlockHandler

這里的storageLevel是構(gòu)建InputDStream時(shí)傳入的鼻吮,socketTextStream的默認(rèn)存儲(chǔ)級(jí)別是StorageLevel.MEMORY_AND_DISK_SER_2

如果使用WriteAheadLogBasedBlockHandler需要開啟WAL,默認(rèn)并沒有開啟:

WAL日志方式:

這種方式會(huì)現(xiàn)將數(shù)據(jù)寫入日志文件较鼓,就是checkpoint目錄椎木,出現(xiàn)異常是,從checkpoint目錄重新讀取數(shù)據(jù)博烂,進(jìn)行恢復(fù)香椎。啟動(dòng)WAL時(shí)候,沒必要將副本數(shù)設(shè)置成大于1禽篱,也不需要序列化畜伐。

WAL會(huì)將數(shù)據(jù)同時(shí)寫入BlockManager和write ahead log,而且是并行的寫block躺率,當(dāng)然兩處的block存儲(chǔ)完成玛界,才會(huì)返回。

將Block 存入BlockManager:

將Block 存入WAL日志:

WAL寫數(shù)據(jù)的時(shí)候是順序?qū)懙恐ǎ瑪?shù)據(jù)不可修改慎框,所以讀的時(shí)候只需要按照指針(也就是要讀的record在那,長(zhǎng)度是多少)讀即可后添。所以WAL的速度非潮靠荩快。

瀏覽一下WriteAheadLog遇西,他是一個(gè)抽象類:

看一下WriteAheadLog的一個(gè)實(shí)現(xiàn)類FileBasedWriteAheadLog的write方法:

根據(jù)不同時(shí)間獲取不同Writer將序列化結(jié)果寫入文件,返回一個(gè)FileBasedWriteAheadLogSegment類型的對(duì)象fileSegment馅精。

讀數(shù)據(jù):

其中創(chuàng)建了一個(gè)FileBaseWriteAheadLogRandomReader對(duì)象,然后調(diào)用了該對(duì)象的read方法:

支持?jǐn)?shù)據(jù)重放粱檀。

在實(shí)際的開發(fā)中直接使用Kafka洲敢,因?yàn)椴恍枰蒎e(cuò),也不需要副本茄蚯。

Kafka有Receiver方式和Direct方式

Receiver方式:是交給Zookeeper去管理數(shù)據(jù)的沦疾,也就是偏移量offSet.如果失效后,Kafka會(huì)基于offSet重新讀取第队,因?yàn)樘幚頂?shù)據(jù)的時(shí)候中途崩潰,不會(huì)給Zookeeper發(fā)送ACK刨秆,此時(shí)Zookeeper認(rèn)為你并沒有消息這個(gè)數(shù)據(jù)凳谦。但是在實(shí)際中越來用的越多的是Direct的方式直接操作offSet.而且還是自己管理offSet.

DirectKafkaInputDStream會(huì)去查看最新的offSet,并且把offSet放到Batch中。

在Batch每次生成的時(shí)候都會(huì)調(diào)用latestLeaderOffsets查看最近的offSet,此時(shí)的offSet就會(huì)與上一個(gè)offSet相減獲得這個(gè)Batch的范圍衡未。這樣就可以知道讀那些數(shù)據(jù)尸执。

轉(zhuǎn)載請(qǐng)注明出去:http://www.reibang.com/users/4435a13863fb/latest_articles

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末家凯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子如失,更是在濱河造成了極大的恐慌绊诲,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褪贵,死亡現(xiàn)場(chǎng)離奇詭異掂之,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)脆丁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門世舰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人槽卫,你說我怎么就攤上這事跟压。” “怎么了歼培?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵震蒋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我躲庄,道長(zhǎng)查剖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任读跷,我火速辦了婚禮梗搅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘效览。我一直安慰自己无切,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布丐枉。 她就那樣靜靜地躺著哆键,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘦锹。 梳的紋絲不亂的頭發(fā)上籍嘹,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音弯院,去河邊找鬼辱士。 笑死,一個(gè)胖子當(dāng)著我的面吹牛听绳,可吹牛的內(nèi)容都是我干的颂碘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼椅挣,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼头岔!你這毒婦竟也來了塔拳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤峡竣,失蹤者是張志新(化名)和其女友劉穎靠抑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體适掰,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颂碧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攻谁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚伍。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖戚宦,靈堂內(nèi)的尸體忽然破棺而出个曙,到底是詐尸還是另有隱情,我是刑警寧澤受楼,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布垦搬,位于F島的核電站,受9級(jí)特大地震影響艳汽,放射性物質(zhì)發(fā)生泄漏猴贰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一河狐、第九天 我趴在偏房一處隱蔽的房頂上張望米绕。 院中可真熱鬧,春花似錦馋艺、人聲如沸栅干。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碱鳞。三九已至,卻和暖如春踱蛀,著一層夾襖步出監(jiān)牢的瞬間窿给,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工率拒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崩泡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓猬膨,卻偏偏與公主長(zhǎng)得像允华,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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