spark streaming框架簡(jiǎn)介

1. spark steaming概述

《spark 基礎(chǔ)(上篇)》中诬留,spark streaming是spark體系中的一個(gè)流式處理框架匠题。因此乳蓄,Spark streaming相對(duì)于其他流式處理框架就更有優(yōu)勢(shì)蚊逢,用途更加廣泛,它能夠與spark sql晴及、機(jī)器學(xué)習(xí)以及圖像處理框架無縫連接都办。spark streaming還能夠從多種數(shù)據(jù)源獲得數(shù)據(jù),同時(shí)虑稼,能夠輸出到多種不同的數(shù)據(jù)平臺(tái)中琳钉,包括文件系統(tǒng)、數(shù)據(jù)庫和實(shí)時(shí)數(shù)據(jù)展示平臺(tái)dashboards蛛倦。spark streaming的流處理框架如下圖1所示:

圖1 spark streaming的流處理框架

  詳細(xì)的處理流程如下圖2所示歌懒,spark streaming接收實(shí)時(shí)數(shù)據(jù)流輸入的數(shù)據(jù)流后,再將其劃分為一個(gè)個(gè)batch(小批次數(shù)據(jù)流)供后續(xù)Spark engine處理溯壶,所以實(shí)際上及皂,Spark Streaming是按一個(gè)個(gè)batch(小批次)來處理數(shù)據(jù)流的。

圖2 spark streaming數(shù)據(jù)處理流程

  說到spark streaming就不得不提Dstream且改,Dstream是spark中繼spark core的RDD验烧、spark sql的DataFrame和DataSet后有一基礎(chǔ)的數(shù)據(jù)類型,是spark streaming特有的數(shù)據(jù)類型又跛。DStream代表了一系列連續(xù)的RDD噪窘,DStream中每個(gè)RDD包含特定時(shí)間間隔的數(shù)據(jù),存儲(chǔ)方式為HashMap<Time,RDD>。其中倔监,Time為時(shí)間序列,而RDD我們都很熟悉菌仁,它是spark core的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)浩习。Dstream的結(jié)構(gòu)如下圖3所示:

圖3 Dstream結(jié)構(gòu)

  對(duì)連續(xù)不斷的streaming data流的多次切片,就會(huì)將流分成多個(gè)batch济丘,單個(gè)batch內(nèi)有一套針對(duì)多個(gè)Dstream的處理邏輯谱秽,每個(gè)batch的處理邏輯相同。這個(gè)處理邏輯相當(dāng)于spark core對(duì)RDD的處理邏輯摹迷。針對(duì)RDD的處理中疟赊,DAGScheduler將DAGGraph按照寬窄依賴劃分stage。每個(gè)batch內(nèi)部也存在DstreamGraph峡碉,對(duì)Dstream的處理也類似于對(duì)RDD的處理近哟。例如下圖4所示,針對(duì)一段代碼鲫寄,在單個(gè)batch內(nèi)部也會(huì)生成DstreamGraph和Dstream依賴吉执。

圖4 單個(gè)bath內(nèi)部處理流程

  針對(duì)一個(gè)spark streaming的處理流中的多個(gè)batch,處理邏輯如下圖5所示地来。圖中用虛線將左側(cè)的streaming data流分成三個(gè)batch戳玫,每個(gè)batch的處理邏輯如右側(cè)所示。

圖5 streaming流批量處理流程

2. spark streaming工作原理

根據(jù)如上圖5分析可知未斑,spark streaming的大致工作流程如下:
  首先咕宿,需要一個(gè)DAG的靜態(tài)模板來定義batch內(nèi)的執(zhí)行邏輯。
  其次蜡秽,如上圖2所示府阀,針對(duì)實(shí)時(shí)的數(shù)據(jù)流來說, 還需要有控制器载城,不間斷地將數(shù)據(jù)流分成多個(gè)batch肌似,同時(shí)在每個(gè)batch內(nèi)部應(yīng)用DAG靜態(tài)模板執(zhí)行處理邏輯。
  再次诉瓦,要生成DStream川队,并不能像一般的數(shù)據(jù)源那樣從存儲(chǔ)介質(zhì)中去讀取,而是要從多種數(shù)據(jù)推送過來的數(shù)據(jù)睬澡,包括kafka固额、flume以及twitter等等。
  最后煞聪,由于流式處理要不斷地循環(huán)執(zhí)行斗躏,保障任務(wù)的穩(wěn)定性就顯得尤其重要了。
  因此昔脯,針對(duì)上述四種需要啄糙,spark streaming的整體執(zhí)行流程就是圍繞上述四個(gè)需求而設(shè)置的笛臣,其總體工作流程如下圖6所示。如圖中腳注隧饼,橙色部分顯示DAG的靜態(tài)定義部分沈堡,淡藍(lán)色為控制器部分,負(fù)責(zé)流的拆分燕雁,同時(shí)執(zhí)行橙色部分定義的靜態(tài)模板诞丽。綠色部分顯示了driver和executor的數(shù)據(jù)接收部分,最后的紫色部分拐格,顯示了spark streaming中很重要的穩(wěn)定性保障功能僧免,即checkpoint。

圖6 spark streaming工作原理圖

下面我們來簡(jiǎn)要介紹下每一部分的主要職責(zé):
  第一部分:如上圖4和圖5所示的步驟生成DstreamGraph和Dstream捏浊。
  第二部分:JobScheduler是主要的控制器懂衩,負(fù)責(zé)動(dòng)態(tài)任務(wù)的調(diào)度,包括JobGenerator和ReceiveTracker兩個(gè)主要的成員呛伴。其中勃痴,JobGenerator主要負(fù)責(zé)將data streaming流按照程序中設(shè)置的時(shí)間間隔切分成多個(gè)batch,并按照靜態(tài)的DstreamGraph為以后的每一個(gè)batch生成DstreamGraph热康。而ReceiveTracker則負(fù)責(zé)數(shù)據(jù)流的接收跟蹤和控制沛申,具體的實(shí)現(xiàn)見第三部分。
  第三部分:RecevieTracker啟動(dòng)多個(gè)job姐军,并分發(fā)到多個(gè)executor上铁材。Executor啟動(dòng)ReceiverSupervisor,ReceiverSupervisor啟動(dòng)Receiver來接收數(shù)據(jù)奕锌,ReceiverSupervisor接到數(shù)據(jù)后著觉,按塊的形式存儲(chǔ),并將塊的meta信息上報(bào)給ReceiverTracker惊暴。
  第四部分:ReceiverTracker接收到塊的meta信息后交給ReceivedBlockTracker去管理塊信息饼丘。ReceivedBlockTracker 也采用 WAL 冷備方式進(jìn)行備份,在 driver 失效后辽话,由新的 ReceivedBlockTracker 讀取 WAL 并恢復(fù) block 的 meta 信息肄鸽。
第四部分:這部分主要是處于穩(wěn)定性的考慮,設(shè)置的checkpoint機(jī)制油啤。因此典徘,checkpoint需要將整個(gè)處理流程中的關(guān)鍵節(jié)點(diǎn)都做checkpoint,包括DstreamGraph益咬,JobScheduler逮诲,數(shù)據(jù)塊的meta信息以及塊數(shù)據(jù)。

3. 與storm流處理框架對(duì)比

spark作為Apache spark開源框架的一部分,與當(dāng)前流程的storm開源框架相比梅鹦,主要存在以下差別:
1.處理時(shí)效
  spark streaming處理的數(shù)據(jù)單位是某個(gè)時(shí)間窗口內(nèi)的數(shù)據(jù)流橡庞,而storm是針對(duì)單條記錄處理的檀头。因此,spark streaming可能存在幾秒鐘的延遲希痴,而storm的延遲能縮短到秒內(nèi)壳猜。
2.容錯(cuò)機(jī)制
  spark streaming有較好的容錯(cuò)機(jī)制爱榕,當(dāng)單個(gè)節(jié)點(diǎn)發(fā)生故障后柄粹,它可以跟蹤每批被處理的數(shù)據(jù)流翰蠢,保證每批數(shù)據(jù)只被處理一次堤尾。storm則只能保證單條數(shù)據(jù)處理不會(huì)被遺漏芋绸,而卻允許數(shù)據(jù)有重復(fù)被處理的現(xiàn)象媒殉。
3.運(yùn)行平臺(tái)
  spark streaming和storm都可以運(yùn)行在自己的集群上,spark streaming能同時(shí)運(yùn)行在Yarn和Mesos集群上摔敛,而storm只能運(yùn)行在Mesos上廷蓉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市马昙,隨后出現(xiàn)的幾起案子桃犬,更是在濱河造成了極大的恐慌,老刑警劉巖行楞,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒暇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡子房,警方通過查閱死者的電腦和手機(jī)形用,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來证杭,“玉大人田度,你說我怎么就攤上這事〗夥撸” “怎么了镇饺?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)送讲。 經(jīng)常有香客問我奸笤,道長(zhǎng),這世上最難降的妖魔是什么李茫? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任揭保,我火速辦了婚禮,結(jié)果婚禮上魄宏,老公的妹妹穿的比我還像新娘秸侣。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布味榛。 她就那樣靜靜地躺著椭坚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搏色。 梳的紋絲不亂的頭發(fā)上善茎,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音频轿,去河邊找鬼垂涯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛航邢,可吹牛的內(nèi)容都是我干的耕赘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼膳殷,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼操骡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赚窃,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤册招,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后勒极,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是掰,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年河质,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冀惭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掀鹅,死狀恐怖散休,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乐尊,我是刑警寧澤戚丸,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站扔嵌,受9級(jí)特大地震影響限府,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痢缎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一胁勺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧独旷,春花似錦署穗、人聲如沸寥裂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽封恰。三九已至,卻和暖如春褐啡,著一層夾襖步出監(jiān)牢的瞬間诺舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工备畦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留低飒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓懂盐,卻偏偏與公主長(zhǎng)得像逸嘀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子允粤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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