Spark Master主備切換能夠基於兩種機制,一種是基於文件系統的,一種是基於Zookeeper的,基於文件系統
的主備切換機制,須要在Active Master掛掉以後,由咱們手動
去切換到Standby Master上;而基於Zookeeper
的主備切換機制,能夠實現自動
切換Master。算法
因此咱們接下來重點說說在主Master掛掉後,Standby Master都會作哪些操做。
緩存
Standby Master切換流程圖數據結構
持久化引擎(FileSystemPersistenceEngine或者ZookeeperPersistenceEngine)去讀取持久化的storedApps、storeDrivers、storedWorkers
。 任何一個是非空
的話,就將持久化的Applications、Drivers、Workers信息從新進行註冊
,註冊到Standby Master內存緩存結構中。 將Applications、Workers的狀態都修改成UNKNOWN
。而後向Application所對應的Driver以及Worker發送Standby Master的地址。 更新Master地址,並返回響應給新的Master
。 competeRecovery
方法對沒有發送響應消息的Driver和Worker進行處理,過濾掉他們的信息。competeRecovery方法app
removeWorker方法源碼分析
Master註冊機制流程圖spa
Driver啓動後,執行咱們編寫的Application代碼,執行SparkContext初始化,底層的SparkDeployScheduleBackend會經過AppClient內部的線程ClientActor發送RegisterApplication到Master,進行Application的註冊。線程
Spark中各個內存緩存的數據結構:code
Worker節點在啓動後,就會主動向Master進行註冊對象
spark-submit提交spark Application時,首先就會註冊Driver。隊列
到這裏關於Spark Master的核心源碼已經剖析了一小半了,有了這一講的基礎,咱們下一講就能夠剖析Master最最重要的資源調度算法了!