环境说明:
主机名 IP地址 用途
master 192.168.5.54 namenode、jobtracker
slave1 192.168.5.56 datanode、tasktracker
slave2 192.168.5.57 datanode、tasktracker
slave3 192.168.5.58 datanode、secondarynamenode、tasktracker
平常我们管理的Hadoop集群中的datanode节点意外宕机属于正常现象,但是当我们在平常的巡检中发现机器硬件故障需要停机维修的话,则需要按照规范的流程去把集群中的节点踢除,当然你也可以完全把进程都kill掉,我这里只介绍如何规范的将需要停机的datanode节点踢除集群。
加入slave1机器出现了硬件问题,我需要停机维护的话,则要先踢除集群。操作方法如下:
1、在namenode节点的hadoop部署目录下的conf目录下新建一个excludes文件。(我这里目录就是/root/hadoop/conf),内容如下:
touch /root/hadoop/conf/excludes
我这里只踢除一个节点,所以就写了一个IP地址,如要踢除多个则每行写一个哈。注意只能写IP地址。
[root@master conf]# cat excludes
192.168.5.56
2、在/root/hadoop/conf/core-site.xml文件下新增如下内容保存退出:
<property>
<name>dfs.hosts.exclude</name>
<value>/root/hadoop/conf/excludes</value>
<final>true</final>
</property>
3、然后在namenode节点执行如下命令,也就是让namenode重新读取配置文件。不需要重启集群。
[root@master ~]# hadoop/bin/hadoop dfsadmin -refreshNodes
4、查看集群状态:
[root@master ~]# hadoop/bin/hadoop dfsadmin -report
Configured Capacity: 128672038912 (119.84 GB)
Present Capacity: 73672425472 (68.61 GB)
DFS Remaining: 73434574848 (68.39 GB)
DFS Used: 237850624 (226.83 MB)
DFS Used%: 0.32%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
-------------------------------------------------
Datanodes available: 3 (3 total, 0 dead)
Name: 192.168.5.57:50010
Decommission Status : Normal
Configured Capacity: 67481608192 (62.85 GB)
DFS Used: 118906880 (113.4 MB)
Non DFS Used: 26367545344 (24.56 GB)
DFS Remaining: 40995155968(38.18 GB)
DFS Used%: 0.18%
DFS Remaining%: 60.75%
Last contact: Fri Jun 29 16:58:06 CST 2012
Name: 192.168.5.58:50010
Decommission Status : Normal
Configured Capacity: 31704776704 (29.53 GB)
DFS Used: 118906880 (113.4 MB)
Non DFS Used: 16464519168 (15.33 GB)
DFS Remaining: 15121350656(14.08 GB)
DFS Used%: 0.38%
DFS Remaining%: 47.69%
Last contact: Fri Jun 29 16:58:05 CST 2012
Name: 192.168.5.56:50010
Decommission Status : Decommission in progress
Configured Capacity: 29485654016 (27.46 GB)
DFS Used: 36864 (36 KB)
Non DFS Used: 12167548928 (11.33 GB)
DFS Remaining: 17318068224(16.13 GB)
DFS Used%: 0%
DFS Remaining%: 58.73%
Last contact: Fri Jun 29 16:58:05 CST 2012
通过网页:50070也能查看到:
因为我hdfs文件系统上的数据不是很多,这个状态表明后台正在进行块移动。如果完成后状态则会变成
Decommissioned的字样,当然这个得看你的文件系统的数据量大小决定的。还有一个很重要的说一下,你的备份份数必须小于或者等于你要踢除后所有正常datanode的数量,不然你的Decommissioned in Progress这个状态会一直永远下去。这样也就得出一个公式如下:
备份份数<踢除不正常datanode节点后所有正常datanode节点的总和 或者
备份份数=踢除不正常datanode节点后所有正常datanode节点的总和
我这很快就变成了这个状态:
Name: 192.168.5.56:50010
Decommission Status : Decommissioned
Configured Capacity: 0 (0 KB)
DFS Used: 0 (0 KB)
Non DFS Used: 0 (0 KB)
DFS Remaining: 0(0 KB)
DFS Used%: 100%
DFS Remaining%: 0%
Last contact: Thu Jan 01 08:00:00 CST 1970