Hadoop的defintive指南說 -Hadoop Namenode故障轉移過程如何工作?
每個的Namenode運行一個輕量級的故障轉移控制器的過程,其 工作是監視其故障(使用簡單 心跳機制)NameNode和觸發故障切換應在namenode 失敗。
怎麼一個namenode可以運行某些東西來檢測自己的失敗?
誰給誰發心跳?
這個過程在哪裏運行?
它如何檢測namenode失敗?
它通知過渡的人?
Hadoop的defintive指南說 -Hadoop Namenode故障轉移過程如何工作?
每個的Namenode運行一個輕量級的故障轉移控制器的過程,其 工作是監視其故障(使用簡單 心跳機制)NameNode和觸發故障切換應在namenode 失敗。
怎麼一個namenode可以運行某些東西來檢測自己的失敗?
誰給誰發心跳?
這個過程在哪裏運行?
它如何檢測namenode失敗?
它通知過渡的人?
的ZKFailoverController(ZKFC)是一種新的組分,它是一個動物園管理員客戶端也監視和管理名稱節點的狀態。每一個運行在的NameNode的機器還運行ZKFC,那ZKFC負責:
健康監測 - 有定期的ZKFC坪當地的NameNode健康檢查命令。只要NameNode以及時響應且健康狀態,認爲節點健康。如果節點崩潰,凍結或以其他方式進入不健康狀態,則健康監視器會將其標記爲不健康。
ZooKeeper的會話管理 - 當本地NameNode的是健康的,在ZKFC持有ZooKeeper的開放的會話。如果本地NameNode處於活動狀態,則它還包含一個特殊的「鎖」znode。此鎖使用ZooKeeper對「短暫」節點的支持;如果會話過期,鎖定節點將被自動刪除。
基於ZooKeeper的選 - 如果本地NameNode的是健康的,而ZKFC認爲沒有其他節點當前持有鎖Z序節點,它會自己嘗試獲取鎖。如果成功,則它有「贏得選舉」,並負責運行故障轉移以使其本地NameNode處於活動狀態。
看一看這個Apache PDF是從
http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum
幻燈片16部分:
自動的Namenode故障轉移過程Hadoop:
在典型的HA羣集中,兩臺獨立的機器配置爲NameNode。在任何時候,只有一個NameNodes處於Active狀態,另一個處於Standby狀態。活動NameNode負責羣集中的所有客戶端操作,而Standby僅充當從服務器,並保持足夠的狀態以在必要時提供快速故障轉移。
爲了使待機的Namenode,以保持其與Active的Namenode同步狀態,兩個節點與一組獨立的守護進程稱爲JournalNodes(JNS)進行通信。
當活動節點執行任何名稱空間修改時,它會將修改記錄持久記錄到大多數這些JN中。備用節點從JN讀取這些編輯並應用於其自己的名稱空間。
如果發生故障切換,備用服務器將確保在將自己提升爲活動狀態之前,它已從JounalNodes中讀取所有編輯。這確保了在故障轉移發生之前命名空間狀態已完全同步。
對於HA羣集而言,一次只有一個名稱節點處於活動狀態是至關重要的。 ZooKeeper已用於避免裂腦情況,以便名稱節點狀態不會因故障轉移而發散。
幻燈片8從:http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen
總結:名稱節點是守護進程&故障切換控制器是守護進程。如果名稱節點守護進程失敗,故障轉移控制器守護進程將檢測並採取糾正措施。即使整個機器崩潰,ZooKeeper服務器檢測到它,鎖定將過期,其他備用名稱節點將被選爲活動名稱節點。
Awsome!謝謝。我認爲書本文本不合適,它想convay每個namenode **(機器)**運行一個輕量級故障轉移控制器進程,其工作是監視其名稱節點**(守護進程)**失敗 – K246
我建議編輯您的問題更加通用,如:Hadoop Name節點故障轉移過程如何工作? –