最近需要将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_>hadoop dfsadmin -refreshNodes  </pre>  
  2. <pre></pre>  
  3. <br>  
  4. <br>  
  5.      
 
 

相关文章:

  • 2021-09-22
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-16
猜你喜欢
  • 2022-12-23
  • 2021-12-23
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案