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
    http://www.cnblogs.com/makexu/

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号