一、干掉masters文件
进入hadoop安装目录:/home/hadoop-2.5.1中的/etc/hadoop目录。删除masters文件
【因为引入keepalived之后,我们没有使用secondnamenode,因此不再需要masters文件】
二、删除之前非HA的hadoop所有服务器上的数据文件
/home/hadoop-2.5
三、编辑/home/hadoop-2.5.1/etc/hadoop中的hdfs-site.xml 文件
将其<configuration>标签内容清空,开始编辑新内容如下:
<configuration>
<property>
<name>dfs.nameservices</name>
<value>laoxiao</value>
</property>
<property>
<name>dfs.ha.namenodes.laoxiao</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.laoxiao.nn1</name>
<value>namenode:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.laoxiao.nn2</name>
<value>datanode2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.laoxiao.nn1</name>
<value>namenode:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.laoxiao.nn2</name>
<value>datanode2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://secondarynamenode:8485;datanode1:8485;datanode2:8485/abc</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.laoxiao</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_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/journal/node/local/data</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
四、编辑/home/hadoop-2.5.1/etc/hadoop中的core-site.xml 文件
将其<configuration>标签内容清空,开始编辑新内容如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://laoxiao</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-2.5</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>namenode:2181,secondarynamenode:2181,datanode1:2181</value>
</property>
</configuration>
五、修改/home/hadoop-2.5.1/etc/hadoop中的slaves文件
secondarynamenode
datanode1
datanode
六、启动JournalNode
在secondarynamenode、datanode1、datanode2上分别执行命令
hadoop-daemon.sh start journalnode
启动JournalNode
七、判断JournalNode启动是否正常
执行命令
tail -200 /home/hadoop-2.5.1/logs/hadoop-root-journalnode-secondarynamenode.log
tail -200 /home/hadoop-2.5.1/logs/hadoop-root-journalnode-datanode1.log
tail -200 /home/hadoop-2.5.1/logs/hadoop-root-journalnode-datanode2.log
查看日志中是否报错
八、同步namenode的元数据
1、首先随便在namenode和datanode2中找一台格式化。这里我在datanode2上执行 hdfs namenode -format 命令来格式化
2、将namenode2上产生的/home/hadoop-2.5整个文件夹拷贝至namenode上
九、Initializing HA state in ZooKeeper (初始化HA)
选择一台namenode执行命令
hdfs zkfc -formatZK
即可
十、启动
给namenode和datanode2互相配置免密登录,配置详细步骤见前几篇博客中
【为什么要在namenode和datanode2?那是因为namenode和datanode2是我们的两个主备namenode,他们要可以互相访问,才可以实时监控,完成宕机切换】
十一、启动
在配置了免密登录的主机执行 start-dfs.sh
十二、验证启动是否成功
在浏览器中分别输入链接http://192.168.43.201:50070 http://192.168.43.204:50070
其中http://192.168.43.201:50070位namenode的web监控页面 http://192.168.43.204:50070为datanode2的web监控页面
若两个显示如下,则说明启动成功:
十三、测试自动切换
1、在namenode上执行jps,得到下图
2、杀掉namenode进程
执行命令kill -9 5396
3、重复第 十二 步,看activiti节点是否切换