无论是在Hadoop集群中添加机器和删除机器,都无需停机,整个服务不中断。
 
 本次操作之前,Hadoop的集群情况如下:
 
 HDFS的机器情况如下:
 
 
 
 MR的机器情况如下:

添加机器 
在集群的Master机器中,修改$HADOOP_HOME/conf/slaves文件,在其中添加需要加入集群的新机器(hp3)的主机名:
 
 hp3
hp2
dell1
dell2
dell3
dell4
 然后在Master机器中执行如下命令: 
 
$HADOOP_HOME/bin/start-all.sh
 这样操作完成之后,新的机器就添加到集群中来了。 
 
 HDFS集群增加了一台新的机器: 
 
 
 
 MR集群中也新增了一台机器: 

 删除机器 
不安全的方式 
 由于Hadoop集群自身具备良好的容错性,可以直接关闭相应的机器,从而达到将该机器撤除的目的。但是如果一次性操作3台以上的机器,就有可能造成部分数
据丢失,所以不推荐使用这种方式进行操作。 
 
 安全的方式 
 在集群的Master机器中,新建一个文件:$HADOOP_HOME/conf/nn-excluded-list,在这个文件中指定需要删除的机器主机名(hp3): 
 
 hp3
 然后,修改Master机器的配置文件:$HADOOP_HOME/conf/hdfs-site.xml,添加如下内容: 
 
<property> 
 
   <name>dfs.hosts.exclude</name> 
 
   <value>conf/nn-excluded-list</value> 
 
 </property>
 最后,在Master机器中执行如下命令: 
 
 $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes
 这样操作完成之后,可以在HDFS集群中看到,hp3机器已经处于Decommission In Progress状态:
 
 
 
 但是MR机器中hp3机器依旧在运行中:
 
 
 
 我们需要等待一定的时间,等待hp3中datanode的Decommission操作完成以后,再到hp3机器中关闭所有的Hadoop进程即可。
 
 这样就完成了整个从集群中删除机器的操作。