配置Hadoop的HA(高可用)
1、首先將完全分散式的配置檔案備份。複製一份配置檔案用來搭建HA。
$ cp -r /home/betty/soft/hadoop/etc/cluster_hadoop /home/betty/soft/hadoop/etc/HA_hadoop
$ rm hadoop -------刪掉之前的軟連線。
$ ln -s HA_hadoop hadoop --------重新建立指向HA_hadoop的軟連線。
2、修改配置檔案
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>dog1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>dog2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>dog1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>dog2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://dog1:8485;dog2:8485;dog3:8485/mycluster</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>/home/betty/.ssh/id_rsa</value>
</property>】
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hyxy/soft/tmp/journalnode</value>
</property>
3、啟動所有機器的journalNode守護程序。
$ hadoop-daemon.sh start journalnode
(一旦啟動了JournalNodes,就必須首先同步兩個HA NameNodes的磁碟元資料。
**** 如果要設定新的HDFS叢集,則應首先在其中一個NameNode上執行format命令(hdfs namenode -format)。
****如果您已經格式化了NameNode,或者正在將啟用了HA的群集轉換為啟用HA,則現在應該通過執行命令“ hdfs namenode bootstrapStandby ”將NameNode元資料目錄的內容複製到另一個未格式化的NameNode上。 在未格式化的NameNode上。
執行此命令還將確保JournalNodes(由dfs.namenode.shared.edits.dir配置)包含足夠的編輯事務,以便能夠啟動兩個NameNode。
如果要將非HA NameNode轉換為HA,則應執行命令“ hdfs namenode -initializeSharedEdits ”,該命令將使用來自本地NameNode編輯目錄的編輯資料初始化JournalNodes。)
4、 啟動原來的namenode守護程序。注意是隻在dog1此臺機器上啟動。
$ hadoop-daemon.sh start namenode
5、 在另一個namenode上覆制原來的資料過來。我設定的另一個namenode是dog2。所以在dog2上執行此命令。
$ hdfs namenode -bootstrapStandby
6、 關閉namenode程序並初始化日誌檔案。在dog1上進行。
$ hadoop-daemon.sh stop namenode
$ hdfs namenode -initializeSharedEdits
7、 啟動叢集 。
$ start-dfs.sh
8、 驗證叢集。
把其中一個namenode切換成活躍的。
$ hdfs haadmin -transitionToActive nn1
上傳檔案。
$ hdfs dfs -put ~/soft/hadoop/etc/slaves /betty
9、檢視 檔案是否上傳成功。
$ hdfs dfs -ls /betty
10、結束。