HDFS高可用性HA架構原理及環境搭建

2021-12-30 12:40:17 字數 2908 閱讀 6616

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系統冗餘架構 災備機制 環境基礎 水 電 空...