1. 程式人生 > >HDFS高可用配置

HDFS高可用配置

在前面安裝完成完全分散式的基礎上改造為高可用


1.安裝啟動zookeeper
a)上傳解壓zookeeper包
b)cp zoo_sample.cfg zoo.cfg修改zoo.cfg檔案
c)dataDir=/opt/data/zookeeper
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
這裡的node1是自己主機名,可以寫ip
d)分別在node1  node2  node3 的資料目錄/opt/data/zookeeper下面建立myid檔案,裡面寫對應server.後面的數字
e)配置環境變數並source生效
export ZK_HOME=/opt/soft/zookeeper-3.4.6
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZK_HOME/bin
f)啟動 zkServer.sh start啟動,隔一分鐘,通過zkServer.sh status檢視狀態

2.配置hadoop配置檔案
 配置hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>sxt</value>
</property>


<property>
<name>dfs.ha.namenodes.sxt</name>
<value>nn1,nn2</value>
</property>


<property>
<name>dfs.namenode.rpc-address.sxt.nn1</name>
<value>node1:8020</value>
</property>


<property>
<name>dfs.namenode.rpc-address.sxt.nn2</name>
<value>node2:8020</value>
</property>


<property>
<name>dfs.namenode.http-address.sxt.nn1</name>
<value>node1:50070</value>
</property>


<property>
<name>dfs.namenode.http-address.sxt.nn2</name>
<value>node2:50070</value>
</property>


<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485/sxt</value>
</property>


<property>
<name>dfs.client.failover.proxy.provider.sxt</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>


配置core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://sxt</value>
</property>


<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/data/journal</value>
</property>


<property>
<name>ha.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>

配置Slaves

node1

node2

node3

3.所有節點啟動所有journalnode

hadoop-daemon.sh start journalnode

4.其中一個namenode節點執行格式化,比如node1
hdfs namenode -format

hadoop-daemon.sh start namenode

5.另外一個namenode節點格式化拷貝 比如 node2
首先要將剛才格式化之後的namenode啟動起來才能拷貝的

hdfs namenode -bootstrapStandby

6.在ZK中建立znode來儲存automatic Failover的資料,任選一個NN執行完成即可:

hdfs zkfc -formatZK



7.啟動

先stop-dfs.sh

然後start-dfs.sh


8.驗證,可以通過前面完全分散式的方式驗證,也可以通過訪問node或者node2的50070埠,比如我的node1的ip是192.168.116.3

就訪問http://192.168.116.3:50070


通過命令hadoop fs -put /opt/1.txt /,確認檔案是否能夠上傳。

9.注意事項:

9.1:第一次啟動的時候,3、4、5、6步驟要逐步執行,後續啟動的時候不需要執行,只要啟動zookeeper服務、以及步驟7.

9.2:如果有問題需要格式namenode的時候,一定要先停止所有服務,手動刪除namenode、zookeeper元資料資料夾。