[Spark內核] 第29課:Master HA徹底解密


 本課主題

  • Master HA 解析
  • Master HA 解析源碼分享

 

[引言部份:你希望讀者看完這篇博客后有那些啟發、學到什么樣的知識點]

更新中......

 

Master HA 解析

  1. 生產環境下一般采用 ZooKeeper 做 HA,且建義為 3台 Master, ZooKeeper 會自動管理 Master 的切換
  2. 采用 ZooKeeper 做 HA 的時候,ZooKeeper 會負責保存整個 Spark 集群運行的元數據:所有 Worker 的信息, 所有 Driver 的信息, 應用程序的信息 和 所有Executor 的信息
  3. ZooKeeper 遇到當前Active 級別的Master 出現故障的時候從Standby Masters 中選取出一台作為Active , 但是要注意,被選舉后到成為真正的Active Master 之間需要從ZooKeeper 中獲取集群當前運行狀態的元數據信息並進行恢復;
  4. 在 Master 切換的過程中,所有已經在運行的程序皆正常運行!因為 Spark Application 在運行前就已經通過 Cluster Manager 獲得了計算資源 所以在運行時 Job 本身的調度和處理和 Master 是沒有任何關系的!
  5. 在Master 的切換過程中唯一的影響是不能提交新的Job: 一方面不能提交新的應用程序給集群,因為只有Active Master 才能接受新的程序的提交請求;另外一方面,已經運行的程序也不能夠因為Action 操作觸發新的Job 的提交請求。

 

Spark Master HA on ZooKeeper 切換流程圖

Master HA 的四大方式

  1. Master HA 的四大方式:分別是 ZOOKEEPER,FILESYSTEM, CUSTOM, NONE;
  2. 需要說明的是:
    • ZOOKEEPER 是自動管理 Master;
    • FILESYSTEM 的方式在 Master 出現突障后需要手動啟動機器,機器啟動后會立即成為 Active 級別的 Master 來對外提供服務(接受應用程序提交的請求、接受新的 Job 運行的請求)
    • CUSTOM 的方式允許用戶自定義 Master HA 的實現,這對於高級用戶特別有用;
    • NONE,這是默應情況,當我們下載安裝了 Spark 集群中就是采用這種方式,該方式不會持久化集群的數據, Driver, Application, Worker and Executor. Master 啟動起立即管理集群;


  3. Persistence Engine 中有一個至關重要的方法 persists 來實現數據持久化

    readPersistedData 來獲取恢復集群中的元數據

    現在去看看它的createdLeaderElectionAgent的方法

  4. FILESYSTEM 和 NONE 的方式均是采用 MonarchyLeaderAgent 的方式來完成 Leader的選舉的,其實際實現是直接把傳入的 Master 作為 Leader

  5. NONE 的方式根本不需要持久化引擎,它為什么要搞一個BlackHoleEngine
  6. 對一些WorkerState狀態為UNKNOWN 的話(Worker不響應),就把它刪除掉,如果你是以集群方式運行的話,driver 失敗話可以重新啟動一下,最后把狀態變回ALIVE,這里注意要加入--supervise這一個參數。

 

[總結部份]

更新中......

 

參考資料 

資料來源來至 DT大數據夢工廠 大數據傳奇行動 第29課:Master HA徹底解密

Spark源碼圖片取自於 Spark 1.6.0版本

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM