原創(chuàng) | 8 張彩圖講解 Spark 任務(wù)提交流程
點(diǎn)擊上方 "大數(shù)據(jù)肌肉猿"關(guān)注,?星標(biāo)一起成長
后臺回復(fù)【加群】,進(jìn)入高質(zhì)量學(xué)習(xí)交流群

看本文之前需要先了解 Spark 的基本角色,因為本篇重點(diǎn)是提交流程,所以不做展開,需要的同學(xué)可以參考官方文檔:
https://spark.apache.org/docs/latest/cluster-overview.html
前面我們講過 9張圖詳解Yarn的工作機(jī)制,驚艷阿里面試官,今天就來講講提交 Spark 作業(yè)的流程。
Spark 有多種部署模式,Standalone、Apache Mesos、Kubernetes、Yarn,但大多數(shù)生產(chǎn)環(huán)境下,Spark 是與 Yarn 一起使用的,所以今天就講講 yarn-cluster 模式。
當(dāng)然我也見過不帶 Hadoop 環(huán)境,使用 Standalone 模式的。比如在云上,Hadoop 一般會使用對應(yīng)的服務(wù),比如 AWS 的 EMR,一方面是費(fèi)用較高,另一方面是較為笨重,沒那么靈活。用 Standalone 模式只需要起幾臺機(jī)器,安裝好 Spark 就可以了。
目前大多數(shù)還是本地環(huán)境,相信學(xué)會了 yarn-cluster 模式,其他的你也都會了。
這是以 yarn-cluster 模式提交一個 Spark 任務(wù)最簡單的命令,計算 Pi(π) 的值。

通過 --master 參數(shù)以及 --deploy-mode 指定為 yarn-cluster 模式,Driver 將運(yùn)行在 Yarn 中。
下面則是提交 Spark 作業(yè)的流程。

第 1 步:Client 提交 Application 到 ResourceManager。

第 2 步:ResourceManager 分配 container,在對應(yīng)的 NodeManager 上啟動 ApplicationMaster,ApplicationMaster 會再啟動 Driver。

第 3 步:Driver 向 ResourceManager 申請 Executor。

第 4 步:ResourceManager 返回 Container 給 Driver。

第 5 步:Driver 在對應(yīng)的 Container 上啟動 Executor。

第 6 步:Executor 向 Driver 反向注冊。

第 7 步:Executor 全部注冊完,Driver 開始執(zhí)行 main 函數(shù)。
第 8 步:Driver 執(zhí)行函數(shù)時,遇到 action 算子就會觸發(fā)一個 job,根據(jù)寬依賴劃分 stage,每個 stage 生成 taskSet,將 task 分發(fā)到 Executor 上執(zhí)行。
第 9 步:Executor 會不斷與 Driver 通信,報告任務(wù)運(yùn)行的情況。
看完這個也許你感覺自己學(xué)會了,但如果不去實踐,過一段時間還是會忘記,所以趕快去面試吧。
·················END·················
你好,我是峰哥,一個騷氣的肌肉男。獨(dú)自窮游過15個國家,60座城市,也是國家級健身教練。
二本車輛工程轉(zhuǎn)型大數(shù)據(jù)開發(fā),拿過66個大數(shù)據(jù)offer,現(xiàn)任某知名外企高級數(shù)據(jù)工程師。
畢業(yè)一年,靠自己在上海買房,點(diǎn)此看我2020年總結(jié)。為人親和,歡迎添加我的微信?Fawn0504?進(jìn)行交流或圍觀朋友圈。
