1、元資料同步
hdfs高可用性保證兩個namenode記憶體中儲存的檔案系統元資料是一致的。
namenode的啟動過程:乙個namenode啟動時,讀取fsimage和edits檔案,讀取後會生成新的fsimage和edits檔案,另乙個namenode同樣需要去讀取這兩個檔案,變化後的edits日誌檔案,同樣需要讀取。在啟動過程中還需要註冊、傳送心跳報告、讀取塊的報告,需要向另乙個namenode實時的匯報。
日誌檔案的安全性:cloudera公司提出:分布式日誌儲存方案。找到乙個datanode節點目錄,zookeeper在2n+1個節點上有n+1個節點日誌檔案寫成功,就說明該日誌檔案寫成功。寫多份,再讀取,節點數目必須是奇數。日誌檔案還可以儲存在zookeeper上。
通過**來讓客戶端判斷現在對外提供服務的是哪台namenode。
有兩個namenode,但是必須在任何情況下,只能有乙個namenode對外提供服務。
ha架構還有journalnode日誌節點,用來儲存執行日誌,
而secondarynamenode在ha架構下就不需要了。
2、hdfs ha配置步驟
(1)關閉已經啟動的所有程序。
(2)配置檔案hdfs-site.xml。
dfs.nameservices
ns1指定兩個namenodeid名稱:
dfs.ha.namenodes.ns1
nn1,nn2
指定namenode所在的機器位置以及互動埠號:
dfs.namenode.rpc-address.ns1.nn1
hadoop-senior.ibeifeng.com:8020
dfs.namenode.rpc-address.ns1.nn2
hadoop-senior02.ibeifeng.com:8020
指定namenode所在的機器位置以及外部互動埠號:
指定日誌節點的機器以及埠號以及命名空間名稱:
dfs.namenode.shared.edits.dir
**ournal:
指定並建立日誌節點儲存的位置路徑:
dfs.journalnode.edits.dir
/opt/app/hadoop-2.5.0/data/dfs/jn
指定**訪問檔案系統:
dfs.client.failover.proxy.provider.ns1
org.apache.hadoop.hdfs.server.namenode.ha.configuredfailoverproxyprovider
指定隔離的方式,選擇的是ssh遠端協議:
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/home/beifeng/.ssh/id_rsa
(3)配置檔案core-site.xml,指定命名空間:
fs.defaultfs
hdfs://ns1
(4)將配置分發到各個節點
[beifeng@hadoop-senior etc]$ scp -r hadoop/
hadoop-senior02.ibeifeng.com:/opt/app/hadoop-2.5.0/etc/
(5)先啟動zookeeper和日誌節點(三颱機器上都啟動)
$ cd /opt/app/zookeeper-3.4.5/
$ bin/zkserver.sh start
$ bin/zkserver.sh status
$ cd /opt/app/hadoop-2.5.0/
$ sbin/hadoop-daemon.sh start journalnode
(6)格式化namenode
注意:如果不清楚有什麼選項,可以在輸入的命令後加-help
$ bin/hdfs namenode -format
啟動namenode(一台namenode啟動)
$ sbin/hadoop-daemon.sh start namenode
另一台namenode做同步
$ bin/hdfs namenode -bootstrapstandby
啟動datanode(三颱datanode都啟動)
$ sbin/hadoop-daemon.sh start datanode
將一台namenode轉為活躍
$ bin/hdfs haadmin -transitiontoactive
(7)向hdfs上傳檔案
$ bin/hdfs dfs -put etc/hadoop/hdfs-site.xml /user/beifeng/temp/conf
將活躍的namenode程序殺死
$ kill -9 3306
將不活躍的namenode程序轉為活躍,通過檢視hdfs上的檔案,以驗證hdfs是否共享
$ bin/hdfs haadmin -transitiontoactive nn2
檢視ha服務狀態:
$ bin/hdfs haadmin -getservicestate
(8)關閉namenode:
$ sbin/hadoop-daemon.sh stop namenode
關閉journalnode:
$ sbin/hadoop-daemon.sh stop journalnode
關閉zookeeper:
zookeeper-3.4.5]$ bin/zkserver.sh stop
理解HDFS高可用性架構
在hadoop1.x版本的時候,namenode存在著單點失效的問題。如果namenode失效了,那麼所有的基於hdfs的客戶端 包括mapreduce作業均無法讀,寫或列檔案,因為namenode是唯一儲存元資料與檔案到資料塊對映的地方。而從乙個失效的namenode中恢復的步驟繁多,系統恢復時間...
Hadoop之HA高可用性
ha存在的背景 ha的工作原理圖 hdfs ha高可用性 1 active namenode對外提供服務和standby namenode時刻待機準備的 2 保證兩個namenode任何時候都是元資料同步的 3 standby namenode同樣需要去讀取fsimage和edits檔案 edits...
高可用性(HA)指標說明
高可用性 high ailability簡稱ha 多被定義為it系統的運營綜合指標,其體現形式就是乙個多個九的百分數,表徵it系統運營的穩定可靠程度,越靠近100 就表明系統約穩定可靠,當然這種穩定與可靠需諸多方面的努力才能獲得,例如應用程式結構設計 it系統冗餘架構 災備機制 環境基礎 水 電 空...