Datanode部分节点下线【转】

最近需要将HDFS集群进行缩减,datanode由8台减到3台。google了一下,觉decommission方式最稳妥,于是使用该方法进行操作。

 

前提条件:

namenode的hdfs-site.xml 里有如下配置项

 

[html] view plain copy
 
  1. <property>  
  2.   <name>dfs.hosts</name>  
  3.   <value>/data/hadoop/etc/hadoop/slaves</value>  
  4. </property>  
  5. <property>      
  6.   <name>dfs.hosts.exclude</name>  
  7.   <value>/data/hadoop/etc/hadoop/dfs_exclude</value>  
  8. </property>  

dfs.hosts是允许接入的机器列表,如果没有配置的话,则任何节点可以接入。dfs.hosts.exclude是打算下线的机器列表。

 

下线节点很简单。

首先在dfs.hosts.exclude的文件里填写想要下线的机器的IP/hostname,然后在namenode上运行

 

[plain] view plain copy
 
  1. hadoop dfsadmin -refreshNodes     

 

打开namode监控UI,就可以看到Decommissioning Nodes 的数量增加,同时Live Nodes页面里,想要下线的机器状态变成了 Decommission In Progress。

此时decommissioning的机器上的数据块会被copy到其它机器上。在监控首页面和Live Nodes页面下方都可以看到还有多少block待复制。

当这些数据块被copy完后,该机器就会变成Decommissioned的状态。接下来,就可以停掉该机器的datanode服务了。同时也需要删除dfs.hosts和dfs.hosts.exclude文件里的该机器地址, 并再次运行

[plain] view plain copy
 
  1. <pre code_snippet_id="2050056" snippet_file_name="blog_20161214_2_6461338" name="code" class="plain">hadoop dfsadmin -refreshNodes  </pre>  
  2. <pre></pre>  
  3. <br>  
  4. <br>  
  5.      
 
 
posted @ 2017-06-28 11:09  XGogo  阅读(1282)  评论(0)    收藏  举报