主机名 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
192.168.5.56
2、在/root/hadoop/conf/core-site.xml文件下新增如下内容保存退出:
dfs.hosts.exclude
/root/hadoop/conf/excludes
true
3、然后在namenode节点执行如下命令,也就是让namenode重新读取配置文件。不需要重启集群。
[root@master ~]# hadoop/bin/hadoop dfsadmin -refreshNodes
4、查看集群状态:
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
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)
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
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
通过网页
http://192.168.5.54:50070也能查看到:
因为我hdfs文件系统上的数据不是很多,这个状态表明后台正在进行块移动。如果完成后状态则会变成
Decommissioned的字样,当然这个得看你的文件系统的数据量大小决定的。
还有一个很重要的说一下,你的备份份数必须小于或者等于你要踢除后所有正常datanode的数量,不然你的Decommissioned in Progress这个状态会一直永远下去。这样也就得出一个公式如下:
备份份数
备份份数=踢除不正常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
再查看网页被移除的节点就查看不到了(这我就懒得截图了),这样基本就完成了按正规流程移除集群中的datanode。下面介绍机器修好了,我要怎么加入到集群中来。
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
再查看网页被移除的节点就查看不到了(这我就懒得截图了),这样基本就完成了按正规流程移除集群中的datanode。下面介绍机器修好了,我要怎么加入到集群中来。
1、新加的节点上启动tasktracker进程
[root@slave1 ~]# hadoop/bin/hadoop-daemon.sh start tasktracker
starting tasktracker, logging to /root/hadoop/bin/../logs/hadoop-root-tasktracker-slave1.out
starting tasktracker, logging to /root/hadoop/bin/../logs/hadoop-root-tasktracker-slave1.out
jps查看一下,不放心的可以ps -ef | grep java看一下:
[root@slave1 ~]# jps
17528 TaskTracker
17571 Jps
2、这个时候我们不能直接启动datanode进程,我们可以试试看:
17528 TaskTracker
17571 Jps
2、这个时候我们不能直接启动datanode进程,我们可以试试看:
[root@slave1 ~]# hadoop/bin/hadoop-daemon.sh start datanode
starting datanode, logging to /root/hadoop/bin/../logs/hadoop-root-datanode-slave1.out
[root@slave1 ~]# jps
17528 TaskTracker
17811 Jps
17761 DataNode
[root@slave1 ~]# jps =====> datanode进程直接马上消失。可以查看日志为什么?
17829 Jps
17528 TaskTracker
starting datanode, logging to /root/hadoop/bin/../logs/hadoop-root-datanode-slave1.out
[root@slave1 ~]# jps
17528 TaskTracker
17811 Jps
17761 DataNode
[root@slave1 ~]# jps =====> datanode进程直接马上消失。可以查看日志为什么?
17829 Jps
17528 TaskTracker
3、修改namenode的core-site.xml文件,把我们刚刚加入的内容删除或者注释掉,我这里选择注释掉。
4、再执行重载namenode的配置文件
[root@master ~]# hadoop/bin/hadoop dfsadmin -refreshNodes
5、最后去启动datanode上的datanode进程
5、最后去启动datanode上的datanode进程
[root@slave1 ~]# hadoop/bin/hadoop-daemon.sh start datanode
starting datanode, logging to /root/hadoop/bin/../logs/hadoop-root-datanode-slave1.out
[root@slave1 ~]# jps
17931 Jps
17528 TaskTracker
17878 DataNode
[root@slave1 ~]# jps ====>正常了!
17528 TaskTracker
17878 DataNode
17953 Jps
starting datanode, logging to /root/hadoop/bin/../logs/hadoop-root-datanode-slave1.out
[root@slave1 ~]# jps
17931 Jps
17528 TaskTracker
17878 DataNode
[root@slave1 ~]# jps ====>正常了!
17528 TaskTracker
17878 DataNode
17953 Jps
有问题的请联系我!
下一篇介绍如下添加新的datanode到hadoop集群中。
下一篇介绍如下添加新的datanode到hadoop集群中。