在單點或者少數節點故障的情況下,叢集還可以正常的提供服務,HDFS高可用機制可以通過配置Active/Standby兩個NameNodes節點實作在叢集中對NameNode的熱備來消除單節點故障問題,如果單個節點出現故障,可通過該方式将NameNode快速切換到另外一個節點上。
本文源碼:GitHub·點這裡 || GitEE·點這裡

基于兩個NameNode做高可用,依賴共享Edits檔案和Zookeeper叢集;
每個NameNode節點配置一個ZKfailover程序,負責監控所在NameNode節點狀态;
NameNode與ZooKeeper叢集維護一個持久會話;
如果Active節點故障停機,ZooKeeper通知Standby狀态的NameNode節點;
在ZKfailover程序檢測并确認故障節點無法工作後;
ZKfailover通知Standby狀态的NameNode節點切換為Active狀态繼續服務;
ZooKeeper在大資料體系中非常重要,協調不同元件的工作,維護并傳遞資料,例如上述高可用下自動故障轉移就依賴于ZooKeeper元件。
服務清單
HDFS檔案
YARN排程
單服務
共享檔案
Zk叢集
hop01
DataNode
NodeManager
NameNode
JournalNode
ZK-hop01
hop02
ResourceManager
ZK-hop02
hop03
SecondaryNameNode
ZK-hop03
建立目錄
拷貝Hadoop目錄
配置core-site.xml
配置hdfs-site.xml,添加内容如下
依次啟動journalnode服務
删除hopHA下資料
NN1格式化并啟動NameNode
NN2同步NN1資料
NN2啟動NameNode
檢視目前狀态
在NN1上啟動全部DataNode
NN1切換為Active狀态
配置hdfs-site.xml,新增内容如下,同步叢集
配置core-site.xml,新增内容如下,同步叢集
關閉全部HDFS服務
啟動Zookeeper叢集
hop01初始化HA在Zookeeper中狀态
hop01啟動HDFS服務
NameNode節點啟動ZKFailover
這裡hop01和hop02先啟動的服務狀态就是Active,這裡先啟動hop02。
結束hop02的NameNode程序
等待一下檢視hop01狀态
基本流程和思路與HDFS機制類似,依賴Zookeeper叢集,當Active節點故障時,Standby節點會切換為Active狀态持續服務。
環境同樣基于hop01和hop02來示範。
配置yarn-site.xml,同步叢集下服務
重新開機journalnode節點
在NN1服務格式化并啟動
NN2上同步NN1中繼資料
啟動叢集下DataNode
NN1設定為Active狀态
先啟動hop01即可,然後啟動hop02。
hop01啟動yarn
hop02啟動ResourceManager
檢視狀态
推薦閱讀:程式設計體系整理
序号
項目名稱
GitHub位址
GitEE位址
推薦指數
01
Java描述設計模式,算法,資料結構
GitHub·點這裡
GitEE·點這裡
☆☆☆☆☆
02
Java基礎、并發、面向對象、Web開發
☆☆☆☆
03
SpringCloud微服務基礎元件案例詳解
☆☆☆
04
SpringCloud微服務架構實戰綜合案例
05
SpringBoot架構基礎應用入門到進階
06
SpringBoot架構整合開發常用中間件
07
資料管理、分布式、架構設計基礎案例
08
大資料系列、存儲、元件、計算等架構