Spark3.0系列(二)Master啟動流程源碼解析

問題

  • 在Spark的standalone 模式中Master是如何啟動?
  • 在Master啟動后又做了哪些操作份企?

Master啟動流程

從Spark2.0開始就以及刪除了akka的相關(guān)通信代碼,所以3.0的rpc通訊采用的還是2.0之后的Netty來作為底層通訊框架巡莹;SparkMaster的啟動類(org.apache.spark.deploy.master.Master.scala)司志,在這個class中的main函數(shù)是啟動Master的開始,我們就從這里開始降宅。
主要啟動流程如下:

  1. 設(shè)置多線程的異常處理器
  2. 獲取和解析SparkMaster參數(shù)信息
  3. 啟動RpcEnv
  4. 注冊Endpoint
  5. 等待Master優(yōu)雅關(guān)閉

1. 設(shè)置多線程的異常處理器

因在多線程中其異常無法準(zhǔn)備獲取骂远,需要進(jìn)行設(shè)置線程的異常處理器來進(jìn)行處理.


設(shè)置異常處理器

2. 獲取和解析SparkMaster的參數(shù)信息

參數(shù)解析

在SparkConf中主要從系統(tǒng)的環(huán)境變量中加載因spark開頭的環(huán)境變量參數(shù)


SparkConf

解析的參數(shù)信息會存放在settings中。
而MasterArguments主要是用來解析Master啟動時通過args傳遞的參數(shù)腰根,以及Spark配置文件中的信息(默認(rèn)為SPARK_HOME/conf/spark-default.conf文件):


MasterArguments

3. 啟動RpcEnv

在Master的main中會調(diào)用startRpcEnvAndEndpoint激才,這個函數(shù)來負(fù)責(zé)啟動Rpc并注冊Endpoint(Master)


startRpcAndEndpoint

其中SecurityManager主要是SparkConf中獲取是否啟用了安全和權(quán)限信息等。


RpcEnv
主要創(chuàng)建RpcEnv的是采用抽象工廠模式來創(chuàng)建NettyRpcEnv的(之前還有akka,現(xiàn)在只剩下netty了)瘸恼。
接下來看看NetyRpcEnv是如何創(chuàng)建的RpcEnv的
NettyRpcEnv

1劣挫、先new出NettyRpcEnv實(shí)例,在NettyRpcEnv進(jìn)行構(gòu)造函數(shù)初始化時东帅,會初始化一些主要的類压固,如Dispatcher、TransportContext靠闭、NettyRpcHandler帐我,以及outbox。
2愧膀、判斷是否是客戶端模式拦键,非客戶端模式需要啟動服務(wù)器,主要用TransportContext來創(chuàng)建服務(wù)器


創(chuàng)建服務(wù)器
在創(chuàng)建服務(wù)器完成后檩淋,會注冊一個驗(yàn)證的Endpoint(RpcEndpointVerifier)芬为,后面會用這個Endpoint來驗(yàn)證給定的EndpointName是否存在之類的操作。
在啟動服務(wù)器時如果端口被占用狼钮,會按照算法進(jìn)行算出下一個端口碳柱,如果是測試模式,最大重試100次熬芜,非測試模式莲镣,最大重試16次,如果重試次數(shù)結(jié)束都無法創(chuàng)建服務(wù)器涎拉,則報錯瑞侮,啟動Master失敗。

4.注冊Endpoint(Master)

注冊Endpoint主要使用RpcEnv#setupEndpoint方法來完成注冊鼓拧,這個方法內(nèi)部又調(diào)用了Dispatcher的registerRpcEndpoint來進(jìn)行記錄Endpoint半火。當(dāng)注冊完成后會返回一個EndpointRef,后面可以用這個Ref來向Endpoint發(fā)送rpc請求季俩。


RegisterMaster

接下來開始構(gòu)造Master钮糖,當(dāng)構(gòu)造完成后會調(diào)用OnStart方法(在創(chuàng)建Dispatcher時,Dispatcher會初始化ShareMessageLoop酌住,當(dāng)注冊Endpoint時會用到MessageLoop#register函數(shù)店归,這個函數(shù)會對每個注冊的Endpoint都創(chuàng)建一個InBox,且在new InBox時酪我,會向里面放OnStart消息作為Endpoint的InBox的第一個消息)
在onStart方法中消痛,主要啟動web ui和rest server以及一些指標(biāo)系統(tǒng);和leader選舉等都哭。


onStart

leaderElection

當(dāng)master服務(wù)器啟動后秩伞,會使用EndpointRef向Master發(fā)送BoundPortsResponse消息來獲取Master啟動的web ui端口和rest端口逞带。
到此Master啟動完成,awaitTermination等待Master關(guān)閉纱新,這個是使用CountDownLatch來實(shí)現(xiàn)的展氓。

后面就等待Worker來連接、Driver來提交作業(yè)怒炸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末带饱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阅羹,更是在濱河造成了極大的恐慌勺疼,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捏鱼,死亡現(xiàn)場離奇詭異执庐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)导梆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門轨淌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人看尼,你說我怎么就攤上這事递鹉。” “怎么了藏斩?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵躏结,是天一觀的道長。 經(jīng)常有香客問我狰域,道長媳拴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任兆览,我火速辦了婚禮屈溉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抬探。我一直安慰自己子巾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布小压。 她就那樣靜靜地躺著砰左,像睡著了一般。 火紅的嫁衣襯著肌膚如雪场航。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天廉羔,我揣著相機(jī)與錄音溉痢,去河邊找鬼僻造。 笑死,一個胖子當(dāng)著我的面吹牛孩饼,可吹牛的內(nèi)容都是我干的髓削。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镀娶,長吁一口氣:“原來是場噩夢啊……” “哼立膛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梯码,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宝泵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轩娶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體儿奶,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年鳄抒,在試婚紗的時候發(fā)現(xiàn)自己被綠了闯捎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡许溅,死狀恐怖瓤鼻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贤重,我是刑警寧澤茬祷,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站游桩,受9級特大地震影響牲迫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜借卧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一盹憎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铐刘,春花似錦陪每、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疤祭,卻和暖如春盼产,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勺馆。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工戏售, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侨核,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓灌灾,卻偏偏與公主長得像搓译,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锋喜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355