天天看點

Hadoop 2.x 之 HA 簡介

HA結構圖

Hadoop 2.x 之 HA 簡介

HA是用來解決單點故障問題

  • DN: DataNode,啟動時會往所有的NameNode彙報
  • NN: NameNode(主 Active(一個)   備 Standby(可以有多個))
  • JournalNodes:JournalNodes就是用來存儲中繼資料的,是一個叢集,節點數量必須為奇數個。
  • 如果主NameNode的中繼資料存在本地磁盤中的fsimage及edits檔案中,如果主挂掉了,那麼備用NameNode将無法從主NameNode擷取中繼資料檔案,是以中繼資料檔案不能存儲在主NameNode的本地了,而是存儲在JournalNodes中
  • 所有的NameNode,不管是主還是備,讀寫中繼資料都是在JournalNodes中進行的。
  • 主NameNode 挂掉後,備NameNode自動從JournalNodes中加載到中繼資料,然後進行工作。
  • FailoverController: 控制NameNode切換的一個服務,還對NameNode進行心跳檢查,判斷是否挂掉,挂掉後要切換到另外一個NameNode
  • ZooKeeper:主要工作是做高可用,任何一個服務的高可用都可以用ZooKeeper來做,節點數量必須為奇數個
  • 用戶端不指定IP位址通路NameNode,用戶端去請求ZooKeeper,ZooKeeper知道哪個NameNode是Active的,然後ZooKeeper傳回給用戶端真正工作的NameNode
  • 自動:ZooKeeper會對所有的NameNode進行心跳檢測,檢測有沒有挂掉,可通過FailoverController對NameNode進行切換
  • 手動:正常情況下,如果想對某個Active NameNode進行修改配置,可手動将其閑置下來,變成Standby,将另一個Standby的NameNode變成Active

HA優點

  • 主備NameNode
  • 解決單點故障
  • 主NameNode對外提供服務,備NameNode同步主NameNode中繼資料,以待切換
  • 所有DataNode同時向兩個NameNode彙報資料塊資訊
  • 兩種切換選擇
  • 手動切換:通過指令實作主備之間的切換,可以用HDFS更新等場合
  • 自動切換:基于ZooKeeper實作
  • 基于ZooKeeper自動切換方案
  • ZooKeeper FailoverController : 監控NameNode健康狀态
  • 并向Zookeeper注冊NameNode
  • NameNode挂掉後,ZKFC為NameNode競争鎖,獲得ZKFC鎖的NameNode變為active

NFS網絡檔案系統(了解)