8.Hadoop动态删除节点

0.系统版本信息
OS:Debian-8.2
JDK:1.8.0_181
Hadoop-2.8.4
Zookeeper-3.4.10
Hbase:1.3.1
Spark:2.3.1
主机信息
192.168.74.131  master
192.168.74.133  slave1
192.168.74.134  slave2
192.168.74.135  slave3
192.168.74.136  slave4
已有节点信息,下面需要将数据相对较多的节点slave3下架,操作时可以看到slave3下架过程中会进行数据的迁移

 

1.下架节点slave3
A:hadoop配置文件
# 以下操作再master下
$ cd /home/hadoop/opt/hadoop-2.8.4/etc/hadoop
$ vim hdfs-site.xml 

<property>  
    <name>dfs.hosts</name>   
    <value>/home/hadoop/opt/hadoop-2.8.4/etc/hadoop/slaves</value>  
</property>
<property>
    <name>dfs.hosts.exclude</name>
    <value>/home/hadoop/opt/hadoop-2.8.4/etc/hadoop/excludes</value>
</property>
# 以下操作再master下
$ cd /home/hadoop/opt/hadoop-2.8.4/etc/hadoop
$ vim mapred-site.xml 

<property>
    <name>mapred.hosts.exclude</name>
    <value>/home/hadoop/opt/hadoop-2.8.4/etc/hadoop/excludes</value>
     <final>true</final>
</property>

 

dfs.hosts所对应的文件中列出了所有可以连接到namenode的datanode,

如果为空则所有的都可以连入(默认可以不配置这个property,那么除了exclude下的所有节点都可以接入)。

dfs.hosts.exclude所对应的文件中列出了禁止连接namenode的datanode节点。如果一个节点在这两个文件中都存在,则不允许连入。
B:配置添加下架的节点文件
# 以下操作再master下执行
$  cd /home/hadoop/opt/hadoop-2.8.4/etc/hadoop
$  vim excludes
slave3

$  hadoop dfsadmin -refreshNodes
C:节点slave3的状态状态变化和数据迁移

Decommission In Progress --> Decommissioned,最后发现节点3上的数据慢慢的都迁移到了节点4上

D:去节点slave3上停掉服务
# 以下在slave3上执行
#  关闭 datanode
./sbin/hadoop-daemon.sh start datanode
 
#  关闭 nodemanager
./sbin/yarn-daemon.sh start nodemanager
E:删除excludes文件内容,重新刷新节点,删除slaves下的节点host:slave4
# 以下在master下执行 
$  > excludes
$  vim slaves
slave1
slave2
slave4

$ hadoop dfsadmin -refreshNodes
F:过段时间后发现slave3已经成为dead节点

注意:

当你下线一个datanode节点,有可能该节点长时间处于Decommission In Progress状态,一直不能转变为Decommissioned。请你用hadoop fsck /检查下是否有些块少于指定的块数,特别注意那些mapreduce的临时文件。将这些删除,并且从垃圾箱移除,该节点就可以顺利下线。另一种方式是修复那些有问题的block

posted @ 2018-08-22 21:29  桃源仙居  阅读(126)  评论(0)    收藏  举报