1. 程式人生 > >Master的註冊機制和狀態改變管理解密

Master的註冊機制和狀態改變管理解密

發生 接受 發送 空值 dto spa 就是 rem 9.png

本課主題

  • Master 接收 Worker, Driver, Application 註冊
  • Master 處理 Driver 狀態變換
  • Master 處理 Executor 狀態變換

Master 接受 Driver, Worker, Application 註冊內幕

可以把 Master 想像成公司裏的總經理,Driver 就是客戶,Worker 是每個項目的技術領導,Executor 是實際幹活的工程師,在實際情況下,他們三個會相互溝通,總經理一般都不會直接跟工程師溝通。但客戶、技術領導和工程師一般都會進行溝通。

用這個例子,你就可以理解在 Spark 的世界中Master、Driver、Worker 三者會進行溝通

Executor、Driver、Worker 三者也會進行溝通,而 Master 不會直接向 Excecutor 進行溝通。

[下圖是 Master 接收 Worker, Driver, Application 的流程圖]

技術分享圖片

Master 對其他組件註冊的處理
  1. Master 接受註冊的對象主要是 Driver, Application 和 Worker, 需要補充說明的是 Executor 不會註冊給 Master,Executor 是註冊給 Driver 中的 SchedulerBackend 的;
  2. Worker 是在啟動之後主動向Master 註冊的,這樣設計有一個很大的好處,就是在生產環境下如果想把新的Worker 加入到已經運行的Spark 集群上,此時不需要重新啟動Spark 集群就能夠使用新加入的Worker 以提升處理能力;Worker 啟動後會調用onStart( ) 方法,然後調用 registerWithMaster( ) 來註冊給Master。
    [下圖是 Worker.scala 中的 onStart 方法]
    技術分享圖片

    這裏 registerWithMaster( ) 首先會調用 tryRegisterAllMasters( )
    [下圖是 Worker.scala 中的 registerWithMaster 方法]
    技術分享圖片
    [下圖是 Worker.scala 中的 tryRegisterAllMasters 方法]
    技術分享圖片
    這裏發送一個 RegisterWorker 的 case class 去 masterEndpoint
    [下圖是 Worker.scala 中的 registerWithMaster 有一個參數的重載方法]
    技術分享圖片
    在 RegisterWorker 這個數據結構中具體會有 id、host、port、workerEndPoint、cores、memory、webUiPort、publicAddress 等信息。它會首先判斷一下 host 是不是空值和 port 必須是大於 0
    [下圖是 DeployMessage.scala 中 RegisterWorker 的 case class]
    技術分享圖片
  3. Master 接到 Worker 註冊的請求後,首先會判斷一下當前的 Master 是否是 Standby 的模式,如果是的話就不處理,然後會判斷當前 Master 內存的數據結構 idToWorker 中是否已經有該 Worker 的註冊信息,如果有的話此時並不會重覆註冊;
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
  4. 通過持久化引擎例如 ZooKeeper 把註冊信息持久化起來
    技術分享圖片
  5. Master 如果決定接收註冊的Worker,首先會創建 WorkerInfo 對象來保存註冊的 Worker 的信息:然後調用 registerWorker 來執行具體的註冊的過程,如果 Worker 狀態是 DEAD 的狀態則直接過濾掉,對於 UNKNOWN 狀態的內容會調用 removeWorker 方法來進行清理(包括清理該工人下的 Executors 和驅動程序。
    技術分享圖片
  6. 註冊的時候會先註冊 Driver 然後再註冊 Application

Master 處理 Driver 狀態變換

  • Master 對 Driver 和 Executor 狀態變化的出來,只有 Driver 的狀態發生變發就直接調用 removeDriver 方法技術分享圖片
  • 首先查看有沒有這個 driver,要看看曾經有沒有登記
    技術分享圖片

Master 處理 Executor 狀態變換

  • 首先是查詢一次有沒有這個 Executor 註冊的信息,
    技術分享圖片技術分享圖片
  • Executor 掛掉的時候系統會進行一定次數的重啟(最多重試10次)
    技術分享圖片
    技術分享圖片

[總結部份]

更新中......

Master的註冊機制和狀態改變管理解密