4.7 Hadoop+zookeeper實現HA

尹成發表於2018-11-15
  1. 叢集規劃
     zk01——zk05,5臺centos
     zk01——zk05部署了5個zookeeper
     zk01為namenode節點
     zk05為namenode的HA節點
     zk02、zk03、zk04為datanode節點
  2. 搭建過程
     修改主機名,hosts
     搭建5臺zookeeper,啟動後5臺機器都要zkServer.sh status檢視狀態,如果有啟動沒成功的節點,先解決這裡的問題,再繼續向下進行
     配置環境變數
     在主節點配置hadoop,其他和以前步驟一樣,只有core-site.xml和hdfs-site.xml有變化,如下:
    core-site.xml中,fs.defaultFS的值修改為hdfs://ns ns為自定義的名稱,與hdfs.site.xml中對應

core-site.xml中,增加以下配置:

<property>    
    <name>dfs.nameservices</name>    
    <value>ns</value>    
</property>  
<!-- ns下面有兩個NameNode,分別是nn1,nn2 -->
<property>
  <name>dfs.ha.namenodes.ns</name>
  <value>nn1,nn2</value>
</property>
<!-- nn1的RPC通訊地址 -->
<property>
  <name>dfs.namenode.rpc-address.ns.nn1</name>
  <value>zk01:9000</value>
</property>
<!-- nn1的http通訊地址 -->
<property>
    <name>dfs.namenode.http-address.ns.nn1</name>
    <value>zk01:50070</value>
</property>
<!-- nn2的RPC通訊地址 -->
<property>
    <name>dfs.namenode.rpc-address.ns.nn2</name>
    <value>zk05:9000</value>
</property>
<!-- nn2的http通訊地址 -->
<property>
    <name>dfs.namenode.http-address.ns.nn2</name>
    <value>zk05:50070</value>
</property>
<!-- 指定NameNode的後設資料在JournalNode上的存放位置 -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>

qjournal://zk01:8485;zk02:8485;zk03:8485;zk04:8485;zk05:8485/ns



dfs.journalnode.edits.dir
/usr/local/hadoop/



dfs.ha.automatic-failover.enabled
true



dfs.client.failover.proxy.provider.ns
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider



dfs.ha.fencing.methods
shell(/bin/true)

 在zk01節點輸入 hdfs zkfc -formatZK 格式化zookeeper叢集,此時會在zookeeper建立HA的相應節點
 所有節點hadoop的sbin目錄下,執行 ./hadoop-daemon.sh start journalnode 啟動JournalNode叢集
 在所有節點hadoop的sbin目錄執行 ./hadoop-daemon.sh start zkfc 啟動ZooKeeperFailoverCotroller
 在zk01節點輸入 hdfs namenode -format -clusterId ss 格式化
 在zk01節點hadoop的sbin目錄輸入 ./hadoop-daemon.sh start namenode 啟動namenode
 在zk05節點hadoop的bin目錄輸入 ./hdfs namenode -bootstrapStandby 將格式化同步到備機
 在zk05節點hadoop的sbin目錄輸入 ./hadoop-daemon.sh start namenode 啟動備機的namenode
 在zk01節點hadoop的sbin目錄輸入 ./hadoop-daemons.sh start datanode 啟動datanode
 在zk01節點hadoop的sbin目錄輸入 ./start-yarn.sh
 下圖是兩個啟動後的namenode節點

 此時 kill -9 zk01節點namenode的程式
 檢視zk05會自動切換為active,HA配置成功

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章