首页 > 代码库 > 第29课:Master HA彻底解密

第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彻底解密

 

第29课:Master HA彻底解密