Spark 原理篇:調(diào)度系統(tǒng)

Spark 調(diào)度系統(tǒng)的工作流程包含如下 5 個(gè)步驟:

  1. 將 DAG 拆分為不同的運(yùn)行階段 Stages罕袋;
  2. 創(chuàng)建分布式任務(wù) Tasks 和任務(wù)組 TaskSet;
  3. 獲取集群內(nèi)可用的硬件資源情況哈街;
  4. 按照調(diào)度規(guī)則決定優(yōu)先調(diào)度哪些任務(wù) / 組;
  5. 依序?qū)⒎植际饺蝿?wù)分發(fā)到執(zhí)行器 Executor。


    image.png

調(diào)度系統(tǒng)中的核心組件有哪些废睦?

1. DAGScheduler(需求端,創(chuàng)建的tasks就是需求)

職責(zé)

1.把用戶 DAG 拆分為 Stages;
2.在 Stage 內(nèi)創(chuàng)建計(jì)算任務(wù) Tasks

2. SchedulerBackend(資源供給端,Executors資源情況)

職責(zé):

資源調(diào)度器的封裝與抽象(SchedulerBackend是資源調(diào)度的接口,對(duì)接不同資源調(diào)度模式需要不同的資源調(diào)度實(shí)現(xiàn))
不同資源調(diào)度模式對(duì)應(yīng)的實(shí)現(xiàn)類(lèi)(local,Standalone,yarn-cluster,yarn-client等)

CoarseGrainedSchedulerBackend 是SchedulerBackend 的一個(gè)粗粒度資源調(diào)度實(shí)現(xiàn)

對(duì)內(nèi)(Executors資源情況)

SchedulerBackend 用 ExecutorData 對(duì) Executor 進(jìn)行資源畫(huà)像养泡;
用一個(gè)叫做 ExecutorDataMap 的數(shù)據(jù)結(jié)構(gòu)嗜湃,來(lái)記錄每一個(gè)計(jì)算節(jié)點(diǎn)中 Executors 的資源狀態(tài)。ExecutorDataMap 是一種 HashMap澜掩,它的 Key 是標(biāo)記 Executor 的字符串购披,Value 是一種叫做 ExecutorData 的數(shù)據(jù)結(jié)構(gòu),ExecutorData 用于封裝 Executor 的資源狀態(tài)肩榕,如 RPC 地址刚陡、主機(jī)地址、可用 CPU 核數(shù)和滿配 CPU 核數(shù)等等点把,它相當(dāng)于是對(duì) Executor 做的“資源畫(huà)像”

對(duì)外(tasks對(duì)資源的需求)

SchedulerBackend 以 WorkerOffer 為粒度提供計(jì)算資源橘荠,WorkerOffer 封裝了 Executor ID、主機(jī)地址和 CPU 核數(shù)郎逃,用來(lái)表示一份可用于調(diào)度任務(wù)的空閑資源哥童。

3.TaskScheduler(中介,將需求與資源按規(guī)則分配)

職責(zé):

基于既定的規(guī)則與策略達(dá)成供需雙方的匹配與撮合褒翰。
也就是將tasks 與 WorkerOffer按照規(guī)則與策略進(jìn)行匹配

調(diào)度優(yōu)先級(jí)類(lèi)型

不同 Stages 之間

Stages 之間的任務(wù)調(diào)度贮懈,TaskScheduler 提供了 2 種調(diào)度模式匀泊,分別是 FIFO(先到先得)和 FAIR(公平調(diào)度)

FIFO(先到先得)

Stages 按照被創(chuàng)建的時(shí)間順序來(lái)依次消費(fèi)可用計(jì)算資源

FAIR(公平調(diào)度)

哪個(gè) Stages 優(yōu)先被調(diào)度,取決于用戶在配置文件 fairscheduler.xml 中的定義朵你。
在配置文件中各聘,Spark 允許用戶定義不同的調(diào)度池,每個(gè)調(diào)度池可以指定不同的調(diào)度優(yōu)先級(jí)抡医,用戶在開(kāi)發(fā)過(guò)程中可以關(guān)聯(lián)不同作業(yè)與調(diào)度池的對(duì)應(yīng)關(guān)系躲因,這樣不同 Stages 的調(diào)度就直接和開(kāi)發(fā)者的意愿掛鉤,也就能享受不同的優(yōu)先級(jí)待遇

同 Stages 內(nèi)不同任務(wù)

當(dāng) TaskScheduler 接收到來(lái)自 SchedulerBackend 的 WorkerOffer 后忌傻,TaskScheduler 會(huì)優(yōu)先挑選那些滿足本地性級(jí)別要求的任務(wù)進(jìn)行分發(fā)

本地性級(jí)別

Process local < Node local < Rack local < Any
從左到右分別是進(jìn)程本地性大脉、節(jié)點(diǎn)本地性、機(jī)架本地性和跨機(jī)架本地性水孩。從左到右镰矿,計(jì)算任務(wù)訪問(wèn)所需數(shù)據(jù)的效率越來(lái)越差

本地性級(jí)別如何確定

根據(jù)任務(wù)依賴(lài)的數(shù)據(jù)集分片所在的位置信息

本地性級(jí)別何時(shí)確定

DAGScheduler 劃分 Stages、創(chuàng)建分布式任務(wù)的過(guò)程中俘种,會(huì)為每一個(gè)任務(wù)指定本地性級(jí)別

任務(wù)調(diào)度流程圖

Spark分布式任務(wù)調(diào)度流程

歸納

1.核心職責(zé)

先將用戶構(gòu)建的 DAG 轉(zhuǎn)化為分布式任務(wù)秤标,結(jié)合分布式集群資源的可用性,基于調(diào)度規(guī)則依序把分布式任務(wù)分發(fā)到執(zhí)行器 Executors宙刘;

2.核心原則

盡可能地讓數(shù)據(jù)呆在原地苍姜、保持不動(dòng),同時(shí)盡可能地把>>>承載計(jì)算任務(wù)的代碼分發(fā)到離數(shù)據(jù)最近的地方(Executors 或計(jì)算節(jié)點(diǎn))荐类,從而最大限度地降低分布式系統(tǒng)中的網(wǎng)絡(luò)開(kāi)銷(xiāo)怖现。

參考鏈接:https://time.geekbang.org/column/article/355028

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市玉罐,隨后出現(xiàn)的幾起案子屈嗤,更是在濱河造成了極大的恐慌,老刑警劉巖吊输,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饶号,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡季蚂,警方通過(guò)查閱死者的電腦和手機(jī)茫船,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扭屁,“玉大人算谈,你說(shuō)我怎么就攤上這事×侠模” “怎么了然眼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)葵腹。 經(jīng)常有香客問(wèn)我高每,道長(zhǎng)屿岂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任鲸匿,我火速辦了婚禮爷怀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘带欢。我一直安慰自己运授,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布洪囤。 她就那樣靜靜地躺著徒坡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘤缩。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天伦泥,我揣著相機(jī)與錄音剥啤,去河邊找鬼。 笑死不脯,一個(gè)胖子當(dāng)著我的面吹牛府怯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播防楷,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼牺丙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了复局?” 一聲冷哼從身側(cè)響起冲簿,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亿昏,沒(méi)想到半個(gè)月后峦剔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡角钩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年吝沫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片递礼。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惨险,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脊髓,到底是詐尸還是另有隱情辫愉,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布供炼,位于F島的核電站一屋,受9級(jí)特大地震影響窘疮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冀墨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一闸衫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诽嘉,春花似錦蔚出、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至悦冀,卻和暖如春趋翻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盒蟆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工踏烙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人历等。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓讨惩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親寒屯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荐捻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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