Spark Storage ② - BlockManager 的創(chuàng)建與注冊

本文為 Spark 2.0 源碼分析筆記剧蚣,某些實現(xiàn)可能與其他版本有所出入

上一篇文章介紹了 Spark Storage 模塊的整體架構(gòu)片橡,本文將著手介紹在 Storeage Master 和 Slave 上發(fā)揮重要作用的 BlockManager 是在什么時機以及如何創(chuàng)建以及注冊的。接下來分別介紹 Master 端和 Slave 端的 BlockManager荚虚。

為了方便閱讀,后文中將以 Master 作為 Storage Master(driver) 端的 BlockManager 的簡稱亲善,以 Slave 作為 Storage Slave(executor) 端的 BlockManager 的簡稱傲宜。

BlockManager 創(chuàng)建時機

Master 創(chuàng)建時機

在 driver 端芥吟,構(gòu)造 SparkContext 時會創(chuàng)建 SparkEnv 實例 _env侦铜,創(chuàng)建 _env 是通過調(diào)用 object SparkEnv 的 create 方法,在該方法中會創(chuàng)建 Master钟鸵,即 driver 端的 blockManager钉稍。

所以,簡單來說棺耍,Master 是在 driver 創(chuàng)建 SparkContext 時就創(chuàng)建了贡未。

Slave 創(chuàng)建時機

在 worker 進程起來的的時候,object CoarseGrainedExecutorBackend 初始化時會通過調(diào)用 SparkEnv#createExecutorEnv,在該函數(shù)中會創(chuàng)建 executor 端的 BlockManager俊卤,也即 Slave嫩挤。這之后,CoarseGrainedExecutorBackend 才向 driver 注冊 executor消恍,然后再構(gòu)造 Executor 實例岂昭。

接下來,我們看看 BlockManager 是如何創(chuàng)建的狠怨。

創(chuàng)建 BlockManager

一圖勝千言约啊,我們還是先來看看 Master 是如何創(chuàng)建的:

圖1: 創(chuàng)建 BlockManage

結(jié)合上圖我們來進行 Step By Step 的分析

Step1: 創(chuàng)建 RpcEnv 實例 rpcEnv

這一步通過 systemName、hostname佣赖、port 等創(chuàng)建一個 RpcEnv 類型實例 rpcEnv恰矩,更具體的說是一個 NettRpcEnv 實例,在 Spark 2.0 中已經(jīng)沒有 akka rpc 的實現(xiàn)憎蛤,該 rpcEnv 實例用于:

  • 接受稍后創(chuàng)建的 rpcEndpoint 的注冊并持有 rpcEndpoint(該 rpcEndpoint 用于接收對應的 rpcEndpointRef 發(fā)送的消息以及將消息指派給相應的函數(shù)處理)
  • 持有一個消息分發(fā)器 dispatcher: Dispatcher外傅,將接收到的消息分發(fā)給相應的 rpcEndpoint 處理

Step2: 創(chuàng)建 BlockManagerMaster 實例 blockManagerMaster

BlockManagerMaster 持有 driverRpcEndpointRef,其包含各種方法通過該 driverRpcEndpointRef 來給 Master 發(fā)送各種消息來實現(xiàn)注冊 BlockManager蹂午、移除 block栏豺、獲取/更新 block、移除 Broadcast 等功能豆胸。

如上圖所示奥洼,創(chuàng)建 BlockManagerMaster 的流程如下:

  1. 先創(chuàng)建 BlockManagerMasterEndpoint 實例
  2. 對于 master(on driver),將上一步得到的 blockManagerMasterEndpoint 注冊到 driverRpcEnv晚胡,以供之后driverRpcEnv 中的消息分發(fā)器分發(fā)消息給它來處理特定的消息灵奖,并返回 driverRpcEndpointRef;而對于 slave(on executor)估盘,通過 driverHost瓷患、driverPort 獲取 driverRpcEndpointRef
  3. 利用上一步構(gòu)造的 driverRpcEndpointRef,結(jié)合 sparkConf 及是否是 driver 標記來構(gòu)造 BlockManagerMaster 實例

Step3: 創(chuàng)建 BlockManager 實例

結(jié)合 Step1 中創(chuàng)建的 rpcEnv遣妥,Step2 中創(chuàng)建的 blockManagerMaster 以及 executorId擅编、memoryManager、mapOutputTracker箫踩、shuffleManager 等創(chuàng)建 BlockManager 實例爱态。該 BlockManager 也就是 Storage 模塊的 Master 或 Slave 了。

BlockManager 運行在所有的節(jié)點上境钟,包括 driver 和 executor锦担,用來存取在本地或遠程節(jié)點上的 blocks,blocks 可以是在內(nèi)存中慨削、磁盤上火對外內(nèi)存中洞渔。

注冊 BlockManager

BlockManager 實例在被創(chuàng)建后套媚,不能直接使用,必須調(diào)用其 initialize 方法才能使用磁椒。對于 Master堤瘤,是在 BlockManager 創(chuàng)建后就調(diào)用了 initialize 方法;對于 Slave衷快,是在 Executor 的構(gòu)造函數(shù)中調(diào)用 initialize 方法進行初始化宙橱。

initialize 方法中,會進行 BlockManager 的注冊蘸拔,具體操作時通過 driverRpcEndpointRef 發(fā)送 RegisterBlockManager 消息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末师郑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子调窍,更是在濱河造成了極大的恐慌宝冕,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邓萨,死亡現(xiàn)場離奇詭異地梨,居然都是意外死亡,警方通過查閱死者的電腦和手機缔恳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門宝剖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歉甚,你說我怎么就攤上這事万细。” “怎么了纸泄?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵赖钞,是天一觀的道長。 經(jīng)常有香客問我聘裁,道長雪营,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任衡便,我火速辦了婚禮献起,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镣陕。我一直安慰自己征唬,他們只是感情好,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布茁彭。 她就那樣靜靜地躺著,像睡著了一般扶歪。 火紅的嫁衣襯著肌膚如雪理肺。 梳的紋絲不亂的頭發(fā)上摄闸,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天,我揣著相機與錄音妹萨,去河邊找鬼年枕。 笑死,一個胖子當著我的面吹牛乎完,可吹牛的內(nèi)容都是我干的熏兄。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼树姨,長吁一口氣:“原來是場噩夢啊……” “哼摩桶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帽揪,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤硝清,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后转晰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦拿,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年查邢,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔗崎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡扰藕,死狀恐怖缓苛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情实胸,我是刑警寧澤他嫡,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站庐完,受9級特大地震影響钢属,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜门躯,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一淆党、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讶凉,春花似錦染乌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褐望,卻和暖如春勒庄,著一層夾襖步出監(jiān)牢的瞬間串前,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工实蔽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荡碾,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓局装,卻偏偏與公主長得像坛吁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铐尚,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

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