因业务需要,对原有集群四台服务器做动态扩容为8台服务器的集群。原有集群为HA配置,所以对集群做节点增加时需要两个重要的步骤要做。

1、hdfs-site.xml配置文件的修改。

2、同步journal文件到新节点的每一台机器的dfs目录中。(在这之前需要对新节点的集群做同版本的hadoop软件的安装及配置文件的同步,包括hdfs-site.xml文件的修改)

3、JournalNode进程及journal文件的作用:

HA通过zk同时保证启动两个NameNode,一个为activate状态,一个为StandBy状态。两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。

1、hdfs配置文件的修改:(我这里的原配置和修改后配置图片是一样的,因为已经配置完成,没有原图,只需要将你新作为计算节点的服务器ip或者hostname添加到这个配置文件的尾部就可以了)

原配置为:

hadoop 横向扩展 hadoop动态扩容_hadoop

修改为:

hadoop 横向扩展 hadoop动态扩容_hadoop 横向扩展_02

2.分发hdfs-site.xml文件到各节点(同步安装好hadoop版本软件将配置文件hdfs-site.xml和其他配置文件scp到所有的节点中)

3.将原journalnode上的edits文件scp到新的journalnode节点(即原journalnode节点上的dfs目录下的journal文件scp到新节点的dfs目录中)同用户scp权限会一样

4.新journalnode节点启动journalnode进程

cd $HADOP_HOME

./sbin/hadoop-daemon.sh start journalnode

jps检查是否启动成功,如果失败就去看$HADOOP_HOME/logs下的journalnode相关的日志,一般这里是不会出问题的。

5.把standby(nn2)节点的namenode重启一下(最好用命令或者到web上查看下改节点是否为StandBy状态)

cd $HADOP_HOME

./sbin/hadoop-daemon.sh stop namenode #停止Namenode

./sbin/hadoop-daemon.sh start namenode #启动NameNode

重新启动后,StandBy状态的NameNode已经加载了新添加的节点。

6.切换standby节点为active (将nn2重新启动的NameNode切换为Activate)

hdfs haadmin -failover nn1 nn2 #将nn2切换为Activate

hdfs haadmin -getServiceState nn2 #获取nn2 NameNodede 状态

7.重启standby(nn1)节点的namenode
完成后web界面应该可以看到NameNode Journal Status的journalnode已扩展完成

8、重新启动集群完成。