HDFS HA高可用完全分佈式搭建步驟

集羣規劃:

NameNode DataNode ZooKeeper ZKFC JournalNode
node01
node02
node03
node04

準備

  1. 在每個節點的/etc/hosts文件中配置對各個主機的映射
  2. 關閉防火牆chkconfig iptables off
  3. 每個節點安裝JDK
  4. 配置node01到包括自己的每個節點免密登錄,以及node02到node01的免密登錄
  5. 每個節點安裝ntp,然後進行時間同步
    可以參考https://blog.csdn.net/PowerBlogger/article/details/83002981

開始搭建

1. 搭建Zookeeper集羣

1).官網下載zookeeper-3.4.10.tar.gz
2).將下載的壓縮包上傳到node02節點並解壓(解壓的目錄並無強制要求,筆者解壓到了和Hadoop目錄下)
3).把conf目錄下的zoo_sample.cfg名稱改爲zoo.cfg① mv zoo_sample.cfg zoo.cfg
4).修改zoo.cfg,把下面的內容加入配置文件

①	dataDir=/var/zfg/zookeeper
②	server.1=node02:2888:3888
③	server.2=node03:2888:3888
④	server.3=node04:2888:3888

5).根據dataDir配置的的路徑創建目錄,然後在目錄下創建myid文件(node02、node03、node04都要創建)

mkdir -p /var/zfg/zookeeper
vim myid

6).在myid文件中寫上配置文件中對應的id,比如node02中就是1,node03和node04依次累加
在這裏插入圖片描述
7).將配置好的zookeeper安裝包拷貝到node03 node04

scp -r zookeeper-3.4.10 root@node03:`pwd`
scp -r zookeeper-3.4.10 root@node03:`pwd`
2. 搭建Hadoop集羣

1). 修改hdfs-site.xml配置文件

<property>
 		    <name>dfs.nameservices</name>
 		    <value>mycluster</value>
</property>
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node01:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node02:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node01:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node02:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/var/abc/hadoop/ha/jn</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>  	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

2).修改core-site.xml配置文件

<property>
   <name>fs.defaultFS</name>
   <value>hdfs://mycluster</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/var/abc/hadoop/cluster</value>
</property>
<property>
   <name>ha.zookeeper.quorum</name>
   <value>node02:2181,node03:2181,node04:2181</value>
</property>

3). 修改slaves配置文件

node02 
node03 
node04

4).將配置好的HDFS安裝包拷貝到node02 node03 node04

3.初始化啓動Hadoop HA集羣

1).啓動Zookeeper集羣,在每個Zookeeper節點(node02,node03,node04)的Zookeeper安裝目錄下的bin目錄中執行zkServer.sh start,如果提示找不到命令,可以執行./zkServer.sh start
成功啓動之後,使用zkServer.sh status命令可以查看到有一臺爲leader
在這裏插入圖片描述
其他兩臺爲follower
在這裏插入圖片描述
2).在node01,node02,node03中開啓journalnode
執行hadoop-daemon.sh start journalnode
成功啓動後使用jps命令可以查看到開啓的journalnode進程
在這裏插入圖片描述
3).初始化NameNode,在node01中執行

	hdfs namenode -format
	hadoop-daemon.sh start namenode

4).在node02中執行

	hdfs namenode  -bootstrapStandby

5).初始化zkfc

	hdfs zkfc -formatZK

6).關閉所有節點

	stop-dfs.sh

7).啓動HDFS

	start-dfs.sh
問題解決

如果啓動後發現有些進程沒有正常啓動,可以查看啓動過程中是否有報錯,然後再根據錯誤信息來解決,如果未能解決或者過程中沒有報錯最終未成功啓動,可以嘗試先關閉所有已開啓的進程,然後把core-site.xml中配置的路徑中的文件夾全部刪除,然後再重新初始化,或者直接把所有節點的hadoop文件夾也刪除之後再重新配置分發,然後再進行初始化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章