Spark的三種集群部署模式

Spark支持三種集群部署模式薄辅,分別為
1.Standalone: 獨立模式,Spark 原生的簡單集群管理器抠璃, 自帶完整的服務站楚, 可單獨部署到一個集群中,無需依賴任何其他資源管理系統(tǒng)搏嗡, 使用 Standalone 可以很方便地搭建一個集群窿春,一般在公司內(nèi)部沒有搭建其他資源管理框架的時候才會使用。
2.Mesos:一個強大的分布式資源管理框架采盒,它允許多種不同的框架部署在其上旧乞,包括 yarn,由于mesos這種方式目前應用的比較少磅氨,這里沒有記錄mesos的部署方式尺栖。
3.YARN: 統(tǒng)一的資源管理機制, 在上面可以運行多套計算框架烦租, 如map reduce延赌、storm 等除盏, 根據(jù) driver 在集群中的位置不同,分為 yarn client 和 yarn cluster挫以。
實際上Spark內(nèi)部為了方便用戶測試者蠕,自身也提供了一些部署模式。由于在實際工廠環(huán)境下使用的絕大多數(shù)的集群管理器是 Hadoop YARN掐松,因此我們關(guān)注的重點是 Hadoop YARN 模式下的 Spark 集群部署踱侣。
Spark 的運行模式取決于傳遞給 SparkContext 的 MASTER 環(huán)境變量的值, 個別模式還需要輔助的程序接口來配合使用大磺,目前支持的 Master 字符串及 URL 包括:

Master URL Meaning
local 在本地運行抡句,只有一個工作進程,無并行計算能力
local[K] 在本地運行量没,有 K 個工作進程玉转,通常設(shè)置 K 為機器的CPU 核心數(shù)量
local[*] 在本地運行,工作進程數(shù)量等于機器的 CPU 核心數(shù)量殴蹄。
spark://HOST:PORT 以 Standalone 模式運行究抓,這是 Spark 自身提供的集群運行模式,默認端口號: 7077
mesos://HOST:PORT 在 Mesos 集群上運行袭灯,Driver 進程和 Worker 進程運行在 Mesos 集群上刺下,部署模式必須使用固定值:--deploy-mode cluster
yarn-client 在 Yarn 集群上運行,Driver 進程在本地稽荧, Work 進程在 Yarn 集群上橘茉, 部署模式必須使用固定值:--deploy-modeclient。Yarn 集群地址必須在HADOOP_CONF_DIRorYARN_CONF_DIR 變量里定義姨丈。
yarn-cluster
效率比yarn-client高
在 Yarn 集群上運行畅卓,Driver 進程在 Yarn 集群上,Work 進程也在 Yarn 集群上蟋恬,部署模式必須使用固定值:--deploy-mode cluster翁潘。Yarn 集群地址必須在HADOOP_CONF_DIRorYARN_CONF_DIR 變量里定義。

用戶在提交任務給 Spark 處理時歼争,以下兩個參數(shù)共同決定了 Spark 的運行方式拜马。
·– master MASTER_URL :決定了 Spark 任務提交給哪種集群處理。
·– deploy-mode DEPLOY_MODE:決定了 Driver 的運行方式沐绒,可選值為 Client
或者 Cluster俩莽。

Standalone 模式運行機制

Standalone 集群有四個重要組成部分, 分別是:
1)Driver: 是一個進程乔遮,我們編寫的 Spark 應用程序就運行在 Driver 上扮超, 由Driver 進程執(zhí)行;
2)Master:是一個進程,主要負責資源的調(diào)度和分配瞒津,并進行集群的監(jiān)控等職責蝉衣;
3)Worker:是一個進程,一個 Worker 運行在集群中的一臺服務器上巷蚪,主要負責兩個職責病毡,一個是用自己的內(nèi)存存儲 RDD 的某個或某些 partition;另一個是啟動其他進程和線程(Executor) 屁柏,對 RDD 上的 partition 進行并行的處理和計算啦膜。
4)Executor:是一個進程, 一個 Worker 上可以運行多個 Executor淌喻, Executor 通過啟動多個線程( task)來執(zhí)行對 RDD 的 partition 進行并行計算僧家,也就是執(zhí)行我們對 RDD 定義的例如 map、flatMap裸删、reduce 等算子操作八拱。

Standalone Client 模式

image.png

在 Standalone Client 模式下,Driver 在任務提交的本地機器上運行涯塔,Driver 啟動后向 Master 注冊應用程序肌稻,Master 根據(jù) submit 腳本的資源需求找到內(nèi)部資源至少可以啟動一個 Executor 的所有 Worker,然后在這些 Worker 之間分配 Executor匕荸,Worker 上的 Executor 啟動后會向 Driver 反向注冊爹谭,所有的 Executor 注冊完成后,Driver 開始執(zhí)行 main 函數(shù)榛搔,之后執(zhí)行到 Action 算子時诺凡,開始劃分 stage,每個 stage 生成對應的 taskSet践惑,之后將 task 分發(fā)到各個 Executor 上執(zhí)行腹泌。

Standalone Cluster 模式

image.png

在 Standalone Cluster 模式下,任務提交后尔觉,Master 會找到一個 Worker 啟動 Driver進程凉袱, Driver 啟動后向 Master 注冊應用程序, Master 根據(jù) submit 腳本的資源需求找到內(nèi)部資源至少可以啟動一個 Executor 的所有 Worker穷娱,然后在這些 Worker 之間分配 Executor绑蔫,Worker 上的 Executor 啟動后會向 Driver 反向注冊运沦,所有的 Executor 注冊完成后泵额,Driver 開始執(zhí)行 main 函數(shù),之后執(zhí)行到 Action 算子時携添,開始劃分 stage嫁盲,每個 stage 生成對應的 taskSet,之后將 task 分發(fā)到各個 Executor 上執(zhí)行。
注意羞秤, Standalone 的兩種模式下( client/Cluster) 缸托, Master 在接到 Driver 注冊
Spark 應用程序的請求后,會獲取其所管理的剩余資源能夠啟動一個 Executor 的所有 Worker瘾蛋, 然后在這些 Worker 之間分發(fā) Executor俐镐, 此時的分發(fā)只考慮 Worker 上的資源是否足夠使用,直到當前應用程序所需的所有 Executor 都分配完畢哺哼, Executor 反向注冊完畢后佩抹,Driver 開始執(zhí)行 main 程序。

YARN 模式運行機制

YARN Client 模式

image.png

在 YARN Client 模式下取董,Driver 在任務提交的本地機器上運行企量,Driver 啟動后會和 ResourceManager 通訊申請啟動 ApplicationMaster戚哎, 隨后 ResourceManager 分配 container , 在 合 適 的 NodeManager 上啟動 ApplicationMaster ,此時的 ApplicationMaster 的功能相當于一個 ExecutorLaucher枣接, 只負責向 ResourceManager
申請 Executor 內(nèi)存。
ResourceManager 接到 ApplicationMaster 的資源申請后會分配 container窑业,然后
ApplicationMaster 在資源分配指定的 NodeManager 上啟動 Executor 進程翔怎, Executor 進程啟動后會向 Driver 反向注冊, Executor 全部注冊完成后 Driver 開始執(zhí)行 main 函數(shù)画侣,之后執(zhí)行到 Action 算子時冰悠,觸發(fā)一個 job,并根據(jù)寬依賴開始劃分 stage配乱,每個 stage 生成對應的 taskSet溉卓,之后將 task 分發(fā)到各個 Executor 上執(zhí)行。

YARN Cluster 模式

image.png

在 YARN Cluster 模式下搬泥, 任務提交后會和 ResourceManager 通訊申請啟動
ApplicationMaster桑寨, 隨后 ResourceManager 分配 container,在合適的 NodeManager
上啟動 ApplicationMaster忿檩,此時的 ApplicationMaster 就是 Driver尉尾。
Driver 啟動后向 ResourceManager 申請 Executor 內(nèi)存, ResourceManager 接到
ApplicationMaster 的資源申請后會分配 container燥透,然后在合適的 NodeManager 上啟動 Executor 進程沙咏,Executor 進程啟動后會向 Driver 反向注冊, Executor 全部注冊完成后 Driver 開始執(zhí)行 main 函數(shù)班套,之后執(zhí)行到 Action 算子時肢藐,觸發(fā)一個 job,并根據(jù)寬依賴開始劃分 stage吱韭,每個 stage 生成對應的 taskSet吆豹,之后將 task 分發(fā)到各個Executor 上執(zhí)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市痘煤,隨后出現(xiàn)的幾起案子凑阶,更是在濱河造成了極大的恐慌,老刑警劉巖衷快,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宙橱,死亡現(xiàn)場離奇詭異,居然都是意外死亡蘸拔,警方通過查閱死者的電腦和手機养匈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來都伪,“玉大人呕乎,你說我怎么就攤上這事≡删В” “怎么了猬仁?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長先誉。 經(jīng)常有香客問我湿刽,道長,這世上最難降的妖魔是什么褐耳? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任诈闺,我火速辦了婚禮,結(jié)果婚禮上铃芦,老公的妹妹穿的比我還像新娘雅镊。我一直安慰自己,他們只是感情好刃滓,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布仁烹。 她就那樣靜靜地躺著,像睡著了一般咧虎。 火紅的嫁衣襯著肌膚如雪卓缰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天砰诵,我揣著相機與錄音征唬,去河邊找鬼。 笑死茁彭,一個胖子當著我的面吹牛总寒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尉间,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼偿乖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哲嘲?” 一聲冷哼從身側(cè)響起贪薪,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眠副,沒想到半個月后画切,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡囱怕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年霍弹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娃弓。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡典格,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出台丛,到底是詐尸還是另有隱情耍缴,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布挽霉,位于F島的核電站防嗡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侠坎。R本人自食惡果不足惜蚁趁,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望实胸。 院中可真熱鬧他嫡,春花似錦、人聲如沸庐完。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽假褪。三九已至署咽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間生音,已是汗流浹背宁否。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缀遍,地道東北人慕匠。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像域醇,于是被迫代替她去往敵國和親台谊。 傳聞我的和親對象是個殘疾皇子蓉媳,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350