客户要求要回收一批hadoop集群的一批服务器,万幸namenode和resourcemanager服务没有安装在这批服务器上,但不巧的是3个journalnode节点都在这批服务器上,所以暂时先增加3个journalnode节点,等到回收服务器的时候,再把原来的journalnode节点下线,记录一下操作
1.修改hdfs-site.xml配置文件
原配置为:
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485/cluster</value>
</property>
修改为:
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485;node4:8485;node5:8485;node6:8485/cluster</value>
</property>
2.分发hdfs-site.xml文件到各节点
3.将原journalnode上的edits文件scp到新的journalnode节点
从hdfs-site.xml文件中的dfs.journalnode.edits.dir配置项得到edits文件存储路径,scp到新节点的相同路径,注意权限和属主要相同,可以用scp -rp来复制
4.新journalnode节点启动journalnode进程
cd $HADOOP_HOME
sbin/hadoop-daemon.sh start journalnode
jps检查是否启动成功,如果失败就去看$HADOOP_HOME/logs下的journalnode相关的日志,讲道理应该没什么问题
5.把standby(nn2)节点的namenode重启一下
cd $HADOOP_HOME
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh start namenode
6.切换standby节点为active
hdfs haadmin -failover nn1 nn2
hdfs haadmin -getServiceState nn2
7.重启standby(nn1)节点的namenode
操作同5,完成后web界面应该可以看到NameNode Journal Status的journalnode已扩展完成