http://coderplay.javaeye.com/blog/290767
http://www.javaeye.com/topic/350223
添加节点
操作如下:
首先 把新节点的 IP或主机名 加入主节点(master)的 conf/slaves 文件。
然后 登录新的从节点,执行以下命令:
$ cd path/to/hadoop
$ bin/hadoop-daemon.sh start datanode
$ bin/hadoop-daemon.sh start tasktracker
然后 就可以在namanode机器上运行balancer,执行负载均衡
$bin/hadoop balancer
注:在0.21中执行bin/hadoop-daemon.sh start datanode 会提示该命令已废除,建议使用./hdfs 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会拒绝操作. 会出异常的