Spark—運(yùn)行時(shí)架構(gòu)

Spark運(yùn)行架構(gòu)

術(shù)語定義

Client:客戶端進(jìn)程序宦,負(fù)責(zé)提交作業(yè)到Master。

Master:Standalone模式中主控節(jié)點(diǎn)背苦,負(fù)責(zé)接收Client提交的作業(yè)互捌,管理Worker,并命令Worker啟動(dòng)Driver和Executor行剂。

Application:Spark Application的概念和Hadoop MapReduce中的類似秕噪,指的是用戶編寫的Spark應(yīng)用程序,包含了一個(gè)Driver功能的代碼和分布在集群中多個(gè)節(jié)點(diǎn)上運(yùn)行的Executor代碼厚宰;

Driver:Spark中的Driver即運(yùn)行上述Application的main()函數(shù)并且創(chuàng)建SparkContext腌巾,其中創(chuàng)建SparkContext的目的是為了準(zhǔn)備Spark應(yīng)用程序的運(yùn)行環(huán)境遂填。在Spark中由SparkContext負(fù)責(zé)和ClusterManager通信,進(jìn)行資源的申請(qǐng)澈蝙、任務(wù)的分配和監(jiān)控等吓坚;當(dāng)Executor部分運(yùn)行完畢后,Driver負(fù)責(zé)將SparkContext關(guān)閉灯荧。通常用SparkContext代表Drive礁击;

Executor:Application運(yùn)行在Worker 節(jié)點(diǎn)上的一個(gè)進(jìn)程,該進(jìn)程負(fù)責(zé)運(yùn)行Task逗载,并且負(fù)責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤上哆窿,每個(gè)Application都有各自獨(dú)立的一批Executor。在Spark on Yarn模式下厉斟,其進(jìn)程名稱為CoarseGrainedExecutorBackend挚躯,類似于Hadoop MapReduce中的YarnChild。一個(gè)CoarseGrainedExecutorBackend進(jìn)程有且僅有一個(gè)executor對(duì)象擦秽,它負(fù)責(zé)將Task包裝成taskRunner码荔,并從線程池中抽取出一個(gè)空閑線程運(yùn)行Task。每個(gè)CoarseGrainedExecutorBackend能并行運(yùn)行Task的數(shù)量就取決于分配給它的CPU的個(gè)數(shù)了号涯;

Cluster Manager:指的是在集群上獲取資源的外部服務(wù)目胡,目前有:

  • Standalone:Spark原生的資源管理,由Master負(fù)責(zé)資源的分配链快;
  • Hadoop Yarn:由YARN中的ResourceManager負(fù)責(zé)資源的分配誉己;

Worker:集群中任何可以運(yùn)行Application代碼的節(jié)點(diǎn),類似于YARN中的NodeManager節(jié)點(diǎn)域蜗。在Standalone模式中指的就是通過Slave文件配置的Worker節(jié)點(diǎn)巨双,在Spark on Yarn模式中指的就是NodeManager節(jié)點(diǎn);

作業(yè)(Job):包含多個(gè)Task組成的并行計(jì)算霉祸,往往由Spark Action催生筑累,一個(gè)JOB包含多個(gè)RDD及作用于相應(yīng)RDD上的各種Operation;

階段(Stage):每個(gè)Job會(huì)被拆分很多組Task丝蹭,每組任務(wù)被稱為Stage慢宗,也可稱TaskSet,一個(gè)作業(yè)分為多個(gè)階段奔穿;

任務(wù)(Task): 被送到某個(gè)Executor上的工作任務(wù)镜沽;

DAGScheduler: 實(shí)現(xiàn)將Spark作業(yè)分解成一到多個(gè)Stage,每個(gè)Stage根據(jù)RDD的Partition個(gè)數(shù)決定Task的個(gè)數(shù)贱田,然后生成相應(yīng)的Task set放到TaskScheduler中缅茉。

TaskScheduler:實(shí)現(xiàn)Task分配到Executor上執(zhí)行。

SparkContext:整個(gè)應(yīng)用的上下文男摧,控制應(yīng)用的生命周期蔬墩。

RDD:Spark的基本計(jì)算單元译打,一組RDD可形成執(zhí)行的有向無環(huán)圖RDD Graph。

SparkEnv:線程級(jí)別的上下文拇颅,存儲(chǔ)運(yùn)行時(shí)的重要組件的引用奏司。
SparkEnv內(nèi)創(chuàng)建并包含如下一些重要組件的引用:

  • MapOutPutTracker**:負(fù)責(zé)Shuffle元信息的存儲(chǔ)。
  • BroadcastManager**:負(fù)責(zé)廣播變量的控制與元信息的存儲(chǔ)蔬蕊。
  • BlockManager**:負(fù)責(zé)存儲(chǔ)管理结澄、創(chuàng)建和查找塊。
  • MetricsSystem**:監(jiān)控運(yùn)行時(shí)性能指標(biāo)信息岸夯。
  • SparkConf**:負(fù)責(zé)存儲(chǔ)配置信息。

Spark架構(gòu)

spark架構(gòu)圖.png

Spark架構(gòu)采用了分布式計(jì)算中的Master-Slave模型们妥。Master是對(duì)應(yīng)集群中的含有Master進(jìn)程的節(jié)點(diǎn)猜扮,Slave是集群中含有Worker進(jìn)程的節(jié)點(diǎn)。Master作為整個(gè)集群的控制器监婶,負(fù)責(zé)整個(gè)集群的正常運(yùn)行旅赢;Worker相當(dāng)于是計(jì)算節(jié)點(diǎn),接收主節(jié)點(diǎn)命令與進(jìn)行狀態(tài)匯報(bào)惑惶;Executor負(fù)責(zé)任務(wù)的執(zhí)行煮盼;Client作為用戶的客戶端負(fù)責(zé)提交應(yīng)用,Driver負(fù)責(zé)控制一個(gè)應(yīng)用的執(zhí)行带污。

Spark集群部署后僵控,需要在主節(jié)點(diǎn)和從節(jié)點(diǎn)分別啟動(dòng)Master進(jìn)程和Worker進(jìn)程,對(duì)整個(gè)集群進(jìn)行控制鱼冀。在一個(gè)Spark應(yīng)用的執(zhí)行過程中报破,Driver和Worker是兩個(gè)重要角色。Driver 程序是應(yīng)用邏輯執(zhí)行的起點(diǎn)千绪,負(fù)責(zé)作業(yè)的調(diào)度充易,即Task任務(wù)的分發(fā),而多個(gè)Worker用來管理計(jì)算節(jié)點(diǎn)和創(chuàng)建Executor并行處理任務(wù)荸型。在執(zhí)行階段盹靴,Driver會(huì)將Task和Task所依賴的file和jar序列化后傳遞給對(duì)應(yīng)的Worker機(jī)器,同時(shí)Executor對(duì)相應(yīng)數(shù)據(jù)分區(qū)的任務(wù)進(jìn)行處理瑞妇。

Spark的整體流程為:Client 提交應(yīng)用稿静,Master找到一個(gè)Worker啟動(dòng)Driver,Driver向Master或者資源管理器申請(qǐng)資源踪宠,之后將應(yīng)用轉(zhuǎn)化為RDD Graph自赔,再由DAGScheduler將RDD Graph轉(zhuǎn)化為Stage的有向無環(huán)圖提交給TaskScheduler,由TaskScheduler提交任務(wù)給Executor執(zhí)行柳琢。在任務(wù)執(zhí)行的過程中绍妨,其他組件協(xié)同工作润脸,確保整個(gè)應(yīng)用順利執(zhí)行。

  1. 在集群啟動(dòng)的時(shí)候他去,各個(gè)slave節(jié)點(diǎn)(也可以說是worker)會(huì)向集群的Master注冊(cè)毙驯,告訴Master我隨時(shí)可以干活了,隨叫隨到
  2. Master會(huì)根據(jù)一種心跳機(jī)制來實(shí)時(shí)監(jiān)察集群中各個(gè)worker的狀態(tài)灾测,是否能正常工作
  3. Driver Application提交作業(yè)的時(shí)候也會(huì)先向Master注冊(cè)信息
  4. 作業(yè)注冊(cè)完畢之后爆价,Master會(huì)向worker發(fā)射Executor命令
  5. worker產(chǎn)生若干個(gè)Executor準(zhǔn)備執(zhí)行
  6. 各個(gè)worker中的Executor會(huì)向Driver Application注冊(cè)Executor信息,以便Driver Application能夠?qū)⒆鳂I(yè)分發(fā)到具體的Executor
  7. Executor會(huì)定期向Driver Application報(bào)告當(dāng)前的狀態(tài)更新信息
  8. Driver Application發(fā)射任務(wù)到Executor執(zhí)行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媳搪,一起剝皮案震驚了整個(gè)濱河市铭段,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秦爆,老刑警劉巖序愚,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異等限,居然都是意外死亡爸吮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門望门,熙熙樓的掌柜王于貴愁眉苦臉地迎上來形娇,“玉大人,你說我怎么就攤上這事筹误⊥┰纾” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵纫事,是天一觀的道長勘畔。 經(jīng)常有香客問我,道長丽惶,這世上最難降的妖魔是什么炫七? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮钾唬,結(jié)果婚禮上万哪,老公的妹妹穿的比我還像新娘。我一直安慰自己抡秆,他們只是感情好奕巍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著儒士,像睡著了一般的止。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上着撩,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天诅福,我揣著相機(jī)與錄音匾委,去河邊找鬼。 笑死氓润,一個(gè)胖子當(dāng)著我的面吹牛赂乐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咖气,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挨措,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了崩溪?” 一聲冷哼從身側(cè)響起浅役,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伶唯,沒想到半個(gè)月后担租,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抵怎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岭参。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片反惕。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖演侯,靈堂內(nèi)的尸體忽然破棺而出姿染,到底是詐尸還是另有隱情,我是刑警寧澤秒际,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布悬赏,位于F島的核電站,受9級(jí)特大地震影響娄徊,放射性物質(zhì)發(fā)生泄漏闽颇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一寄锐、第九天 我趴在偏房一處隱蔽的房頂上張望兵多。 院中可真熱鬧,春花似錦橄仆、人聲如沸剩膘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怠褐。三九已至,卻和暖如春您宪,著一層夾襖步出監(jiān)牢的瞬間奈懒,已是汗流浹背奠涌。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筐赔,地道東北人铣猩。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像茴丰,于是被迫代替她去往敵國和親达皿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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