一.动态扩容
1.准备工作
1)安装java
2)配置hostname
3)确保ssh免密登录可以互通
4)配置hosts
5)关闭防火墙

2.修改workers
修改保存每台服务器的$HADOOP_home/etc/hadoop/workers文件,添加节点node4。
# cat workers 
node1
node2
node3
node4

3.启动DataNode
在新加的节点node4上,启动datanode。
# hdfs --daemon start datanode
# jps

4.启动nodemanager
在新加的节点node4上,启动nodemanager。
# yarn --daemon start nodemanager
  http://node1:50070的Datanodes页上,多了一个node4。

二.动态缩容
这里假设我们把node3下线。
1.修改hdfs-site.xml
向namenode活动节点的hdfs-site.xml中添加如下内容。
 <property>
                <name>dfs.hosts.exclude</name>
                <value>/bigdata/server/hadoop-3.1.3/etc/hadoop/dfs_excludes</value>
 </property>

2.配置excludes
向namenode的active节点的dfs_excludes中添加nodes。
# cat excludes 
node3

3.刷新节点
在namenode的active节点上进行节点刷新和查看。
# hdfs dfsadmin -refreshNodes
# hdfs dfsadmin -report

可以看到node3的Decommission Status由Normal变为Decomissing,最后变为Decommissioned,表示数据复制完成。
也可以通过控制台进行查看http://node1:50070/dfshealth.html#tab-datanode

4.关闭node3上datanode和nodemanager进程
# hdfs --daemon stop datanode
# yarn --damon stop nodemanager