HDFS高可用配置
阿新 • • 發佈:2019-02-09
在前面安裝完成完全分散式的基礎上改造為高可用
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>
hdfs namenode -format
首先要將剛才格式化之後的namenode啟動起來才能拷貝的
7.啟動
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.所有節點啟動所有journalnodehadoop-daemon.sh start journalnode
4.其中一個namenode節點執行格式化,比如node1hdfs 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
就訪問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元資料資料夾。