1. 程式人生 > >hadoop,zookeeper HA

hadoop,zookeeper HA

active/standby  描述的是namenode節點的狀態

leaderfollow  zookeeper  zkServer.sh 的狀態

 

hdfs(檔案系統)  namenode : 50070

datenode : 啟動的節點(50.96G) 

                                  啟動:sbin/hadoop-daemon.sh   start/stop name/datenode

                                  上傳:  bin/hdfs dfs –put 檔案(路徑) /   (位置)

                                  下載:               -get  /(檔案路徑)

                                  刪除:           -rm –R  /  (檔案或資料夾路徑)

                                 

 

hadoop (叢集):  start/stop-all.sh    啟動/停止所有以.sh結尾的程序 

                          

mapreduce:  hadoop  jar  jar包名稱 /user/input/      (要執行的檔案路徑)  

  /user/phoneout1/   (輸出檔案路徑)

 

yarn(資源管理)  resourcemananger : 8088

nodemananger

啟動:sbin/yarn-daemon.sh  start/stop   resource/nodemanager

 

 

Zookeeper(叢集) : 監視hadoop叢集執行,zookeeper叢集主要功能是實現少量資料(namenode裡的元資料)的分散式同步管理

                                          

叢集規劃:在3個節點上配置zookeeper,一個leader兩個follow

  啟動/停止:bin/zkServer.sh start/stop

 

High Available(高可用)

已知導致服務可靠性不高的原因是namenode節點宕(dang:四聲,宕機)機,那麼怎麼才能避免這個namenode節點宕機呢?

一個容易想到的解決方案是部署兩臺namenode節點,形成主備模式(active/standby模式),這樣一旦active節點宕機,standby節點立即切換到active模式。

在各個NameNode節點上啟動先在哪臺機器啟動,哪個機器的NameNode就是Active NameNode

sbin/hadoop-daemon.sh start zkfc (從standByactive

 

 

響應客戶端請求的是active節點,因此只有active節點儲存了最新的元資料。元資料分為兩部分,一部分是剛寫入新的元資料(edits),另一部分是合併後的較舊的(fsimage)。HA機制解決同步問題的方法是將active節點新寫入的edits元資料放在zookeeper叢集上(zookeeper叢集主要功能是實現少量資料的分散式同步管理),standby節點在active節點正常情況下只需要將zookeeper叢集上edits檔案同步到自己的fsimage中就可以。

       hadoop框架為這個叢集專門寫了個分散式應用qjournal(依賴zookeeper實現),實現qjournal的節點稱為journalnode。

 

 

如何避免腦裂?

      standby namenode感知到主用節點出現異常後並不會立即切換狀態,zkfc會首先通過ssh遠端殺死active節點的 namenode程序(kill -9 程序號)。但是(這樣還不行,驚訝),如果kill指令沒有執行成功咋辦??如果在一段時間內沒有收到執行成功的回執,standby節點會執行一個自定義指令碼,儘量保證不會出現腦裂問題!這個機制在hadoop中稱為fencing(包括ssh傳送kill指令,執行自定義指令碼兩道保障