怎么停止和重新启用hadoop的DataNode

停止

比如我原来有10个节点的集群. 现在我想停掉2个,但数据不能丢失,只能让它们的数据转移到其它8台上.这道过程就是decommission. 我们不能直接把那2台停掉, 要在停掉之前把数据转移出去.

首先建立一个excludes文件.它是一个文本, 里面每行就是想要停掉的主机名.这里excludes 放在 $HADOOP_HOME下
例如
CS02
CS03
CS04
CS05
CS06
CS07
CS08
CS09
CS10
这样就表明要把9台机器给停了.


然后在conf/hadoop-site.xml添加这样的属性:
  <property>                                                                                                                       
        <name>dfs.hosts.exclude</name>                                                                                             
        <value>excludes</ value>                                                                                                    
  </property>  

做完这步, 用bin/hadoop dfsadmin -refreshNodes命令更新结点以及hadoop配置

然后你可以通过 bin/hadoop dfsadmin -report 就可以查看到类似这样的信息:
Name: 192.168.0.86:50010
State          : Decommission in progress
Total raw bytes: 30452150272 (28.36 GB)
Remaining raw bytes: 17727606637(16.51 GB)
Used raw bytes: 6480990208 (6.04 GB)
% used: 21.28%
Last contact: Thu Nov 27 02:25:40 CST 2008

Name: 192.168.0.89:50010
State          : Decommissioned
Total raw bytes: 0 (0 KB)
Remaining raw bytes: 0(0 KB)
Used raw bytes: 4703211520 (4.38 GB)
% used: ∞%
Last contact: Thu Jan 01 08:00:00 CST 1970

可以看到86在停止中, 89已经停止了.
在没停止之前, mapreduce会拒绝操作. 会出异常的

 

重新启用

 

你可能感兴趣的:(mapreduce,hadoop,xml)