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、结束。