Appearance
HA-Hadoop集群动态添加、删除节点
图文教程
前置准备
CentOS7、jdk1.8、hadoop-2.7.7、zookeeper-3.5.7
一、集群规划

下面的步骤我们将实现把hadoop04动态上线,再将hadoop04动态下线
二、启动现有集群
bash
$ ha-hadoop.sh start三、服役新节点(动态上线节点)
3.1 创建新的节点(实际场景下机器已备好)
克隆一个新节点,然后务必将之前集群的数据删除(配置文件中配置的存放数据的目录)。自定义用户、固定IP、主机名、IP与主机映射、自身免密登陆、防火墙都搞好。
bash
$ rm -rf /data/hadoop/tmp/*
$ rm -rf /data/hadoop/dfs/journalnode_data/*
$ rm -rf /data/hadoop/dfs/edits/*
$ rm -rf /data/hadoop/dfs/datanode_data/*
$ rm -rf /data/hadoop/dfs/namenode_data/*将hadoop04的公钥发给hadoop01和02
bash
$ ssh-copy-id hadoop01
$ ssh-copy-id hadoop02将hadoop01和02的公钥发给hadoop04
bash
$ ssh-copy-id hadoop04
$ ssh-copy-id hadoop043.2 创建dn-include.conf文件
在NameNode的hadoop安装目录的etc/hadoop目录下创建dn-include.conf文件(注意文件内一行一个主机名),内容如下
bash
$ touch /data/hadoop/etc/hadoop/dn-include.conf
hadoop01
hadoop02
hadoop03
hadoop043.3 修改hdfs-site.xml和slaves
hdfs-site.xml配置文件中增加dfs.hosts属性
xml
<property>
<name>dfs.hosts</name>
<value>/data/hadoop/etc/hadoop/dn-include.conf</value>
</property>slaves
bash
hadoop01
hadoop02
hadoop03
hadoop043.4 分发文件
bash
$ distribution-dn.sh /data/hadoop/etc/hadoop/dn-include.conf
$ distribution-dn.sh /data/hadoop/etc/hadoop/hdfs-site.xml
$ distribution-dn.sh /data/hadoop/etc/hadoop/slaves3.5 启动DN和NM
bash
$ hadoop-daemon.sh start datanode
$ yarn-daemon.sh start nodemanager3.6 主NN和主RM进行刷新
bash
$ hdfs dfsadmin -refreshNodes
$ yarn rmdmin -refreshNodes3.7 开启数据均衡
bash
$ start-balancer.sh -threshold 10
# 参数值10代表集群中各个节点的磁盘空间利用率相差不超过10%,可根据实际情况进行调整,值越低各节点越平衡,但这样消耗时间也更长数据分散差不多后,这里一定要记得停止数据均衡,不然会一直检测各个节点的磁盘空间利用率,很耗费资源
bash
$ stop-balancer.sh四、退役旧节点(动态下线节点)
退役之前咱们先上传一个74M的jar包,hadoop04退役之后数据会转移到其它DN之上
bash
$ hdfs dfs -put event_ingestion-0.0.1.jar /4.1 创建dn-exclude.conf文件
在NameNode的hadoop安装目录的etc/hadoop目录下创建dn-exclude.conf文件(注意文件内一行一个主机名),将需要退役的节点的主机名加入其中
bash
hadoop044.2 修改hdfs-site.xml
hdfs-site.xml配置文件中增加dfs.hosts.exclude属性
xml
<property>
<name>dfs.hosts.exclude</name>
<value>/data/hadoop/etc/hadoop/dn-exclude.conf</value>
</property>4.3 分发文件
bash
$ distribution-dn.sh /data/hadoop/etc/hadoop/dn-exclude.conf
$ distribution-dn.sh /data/hadoop/etc/hadoop/hdfs-site.xml4.4 主NN和主RM进行刷新
bash
$ hdfs dfsadmin -refreshNodes
$ yarn rmdmin -refreshNodes通过WebUI可以看到退役节点的状态为Decommission In Progress(退役中),说明数据节点正在复制块到其它节点。
4.5 关闭DN和RM
等待退役节点状态为 Decommissioned (所有块已经复制完成),执行下面操作
bash
$ hadoop-daemon.sh stop datanode
$ yarn-daemon.sh stop nodemanager4.6 从slaves和dn-include.conf中剔除退役节点
bash
# 1.将slaves和dn-include.conf中将hadoop04去除
# 2.修改好后进行分发
$ distribution-dn.sh /data/hadoop/etc/hadoop/slaves
$ distribution-dn.sh /data/hadoop/etc/hadoop/dn-include.conf
# 3.主NN和主RM进行刷新
$ hdfs dfsadmin -refreshNodes
$ yarn rmdmin -refreshNodes