22Spark任務(wù)處理流程

Spark任務(wù)處理流程 - thomas0yang的專(zhuān)欄 - 博客頻道 - CSDN.NET http://blog.csdn.net/thomas0yang/article/details/50352261

最近學(xué)習(xí)了Spark铣鹏,其資源和任務(wù)調(diào)度方式的思想跟Yarn很像,現(xiàn)根據(jù)任務(wù)提交分析處理過(guò)程總結(jié)一下相關(guān)的主要模塊和處理流程葵第。
一些重要術(shù)語(yǔ)`
client合溺,用戶(hù)編寫(xiě)的spark任務(wù)提交程序
master,spark主節(jié)點(diǎn)棠赛,負(fù)責(zé)任務(wù)和資源調(diào)度睛约、節(jié)點(diǎn)管理,類(lèi)似于Yarn的ResourceManager
worker辩涝,spark工作節(jié)點(diǎn),可以在上面啟動(dòng)Executor進(jìn)程捉邢,類(lèi)似于Yarn的NodeManager
driver商膊,worker上的一進(jìn)程,負(fù)責(zé)任務(wù)內(nèi)部的分解執(zhí)行等藐翎,類(lèi)似于Yarn的ApplicationMaster
Application实幕,用戶(hù)在spark上構(gòu)建的程序,包含了driver程序以及集群上的executors
Job茬缩,包含很多task的并行計(jì)算凰锡,可以認(rèn)為是Spark RDD 里面的action,每個(gè)action的計(jì)算會(huì)生成一個(gè)job圈暗。用戶(hù)提交的Job會(huì)提交給DAGScheduler裕膀,Job會(huì)被分解成Stage和Task
Stage一個(gè)Job會(huì)被拆分為多組Task,每組任務(wù)被稱(chēng)為一個(gè)Stage就像Map Stage昼扛, Reduce Stage。 Stage的劃分在RDD的論文中有詳細(xì)的介紹渺鹦,簡(jiǎn)單的說(shuō)是以shuffle和result這兩種類(lèi)型來(lái)劃分蛹含。在Spark中有兩類(lèi)task,一類(lèi)是shuffleMapTask吸耿,一類(lèi)是resultTask酷窥,第一類(lèi)task的輸出是shuffle所需數(shù)據(jù)矾踱,第二類(lèi)task的輸出是result砸脊,stage的劃分也以此為依據(jù)拳氢,shuffle之前的所有變換是一個(gè)stage蛋铆,shuffle之后的操作是另一個(gè)stage。比如 rdd.parallize(1 to 10).foreach(println) 這個(gè)操作沒(méi)有shuffle留特,直接就輸出了玛瘸,那么只有它的task是resultTask,stage也只有一個(gè)右核;如果是rdd.map(x => (x, 1)).reduceByKey(_ + _).foreach(println), 這個(gè)job因?yàn)橛衦educe渺绒,所以有一個(gè)shuffle過(guò)程菱鸥,那么reduceByKey之前的是一個(gè)stage躏鱼,執(zhí)行shuffleMapTask,輸出shuffle所需的數(shù)據(jù)鹊漠,reduceByKey到最后是一個(gè)stage茶行,直接就輸出結(jié)果了。如果job中有多次shuffle拢军,那么每個(gè)shuffle之前都是一個(gè)stage茉唉。
Task,被送到executor上的工作單元度陆。Spark上分為2類(lèi)task,shuffleMapTask和 resultTask

處理流程
集群初始化
啟動(dòng)master趾诗,執(zhí)行master的main函數(shù)蹬蚁,初始化master的基本信息,等待任務(wù)處理贝乎,如相應(yīng)worker注冊(cè)叽粹,納入集群管理
啟動(dòng)worker,創(chuàng)建Actor锤灿、創(chuàng)建本地目錄辆脸、注冊(cè)Worker

任務(wù)提交
spark-submit提交最終調(diào)用client類(lèi)(standalone),向master請(qǐng)求requestSubmitJob
master響應(yīng)状囱,1創(chuàng)建driver、加入待分配driver隊(duì)列2調(diào)度schedule 調(diào)度方法浪箭,schedule(): 1、從waitDrivers中分配driver,執(zhí)行driver中的用戶(hù)程序(FIFO) 2匹表、給waitApps分配exectors(spreadout) 3宣鄙、launchExectors
某個(gè)符合要求(cores、mem)的worker節(jié)點(diǎn)被選中作為driver苇羡,執(zhí)行用戶(hù)程序命令
用戶(hù)命令new SparkContext(), 創(chuàng)建DAGScheduler鼻弧、TaskScheduler、SparkDeploySchedulerBackend等叉存,backend創(chuàng)建了AppClient度帮,向master提交registerApplication請(qǐng)求
master響應(yīng),registerApplication:1app加入待處理隊(duì)列waitApps 2調(diào)度schedule
調(diào)度方法執(zhí)行l(wèi)aunchExectors瞳秽,worker上啟動(dòng)executor率翅,準(zhǔn)備執(zhí)行任務(wù)
用戶(hù)命令rdd.action,調(diào)用DAG進(jìn)行任務(wù)分解為stage,在分解為tasks痰洒,TaskScheduler提交Task浴韭,backend.LaunchTask(serialiedTask)
worker上的executor線(xiàn)程池執(zhí)行task脯宿,返回結(jié)果。1\shuffleMapTask,返回MapStatus2\ResultTask,返回directResult
通知driver榴芳,處理task完成,DAG.handleTaskComplet,1窟感、Mapstatus,存放在MapoutputTrackerMaster中柿祈,供以后查詢(xún)使用2、DriectResult,則所有結(jié)果在Driver合并躏嚎,輸出結(jié)果
程序結(jié)束,通知Master節(jié)點(diǎn)finishApplication
master節(jié)點(diǎn)重荠,finishApplication:removeApp虚茶、釋放回收executer等空間

以上過(guò)程是一個(gè)任務(wù)提交的主要處理流程,明細(xì)如RDD之間的依賴(lài)荞彼、計(jì)算待笑、shuffle、存儲(chǔ)等處理等請(qǐng)自行參照Spark源碼寞缝。關(guān)系圖總結(jié)如下:

這里寫(xiě)圖片描述

參考文章: http://spark.apache.org/docs/latest/index.html https://github.com/JerryLead/SparkInternals http://jerryshao.me/architecture/2013/04/21/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B-scheduler%E6%A8%A1%E5%9D%97/ http://jerryshao.me/architecture/2013/03/29/spark-overview/ http://www.cnblogs.com/cenyuhai/tag/Spark%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荆陆,一起剝皮案震驚了整個(gè)濱河市被啼,隨后出現(xiàn)的幾起案子棠枉,更是在濱河造成了極大的恐慌,老刑警劉巖辈讶,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異生闲,居然都是意外死亡碍讯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)屯阀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)轴术,“玉大人,你說(shuō)我怎么就攤上這事盖袭”顺瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拙已,是天一觀(guān)的道長(zhǎng)摧冀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)建车,這世上最難降的妖魔是什么椒惨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任康谆,我火速辦了婚禮,結(jié)果婚禮上沃暗,老公的妹妹穿的比我還像新娘。我一直安慰自己膊存,他們只是感情好忱叭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布韵丑。 她就那樣靜靜地躺著,像睡著了一般钓株。 火紅的嫁衣襯著肌膚如雪陌僵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天受葛,我揣著相機(jī)與錄音偎谁,去河邊找鬼。 笑死闰渔,一個(gè)胖子當(dāng)著我的面吹牛铐望,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播正蛙,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼跟畅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了奸攻?” 一聲冷哼從身側(cè)響起虱痕,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤部翘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赘风,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纵刘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年假哎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肪虎。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惧蛹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爵政,到底是詐尸還是另有隱情陶缺,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布掺出,位于F島的核電站苫费,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闲礼。R本人自食惡果不足惜铐维,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锨并。 院中可真熱鬧睬棚,春花似錦解幼、人聲如沸包警。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至痒芝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澄者,已是汗流浹背请琳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工俄精, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竖慧。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓圾旨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親砍的。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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