您的位置:首页 > Web前端 > Node.js

hadoop1.x配置 - 集群删除datanode

2013-07-18 10:10 344 查看
环境说明:

主机名       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

通过网页http://192.168.5.54: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
再查看网页被移除的节点就查看不到了(这我就懒得截图了),这样基本就完成了按正规流程移除集群中的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

jps查看一下,不放心的可以ps -ef | grep java看一下:

[root@slave1 ~]# jps

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

3、修改namenode的core-site.xml文件,把我们刚刚加入的内容删除或者注释掉,我这里选择注释掉。

<!--

    <property>

         <name>dfs.hosts.exclude</name>

         <value>/root/hadoop/conf/excludes</value>

         <final>true</final>

    </property>

-->

4、再执行重载namenode的配置文件

[root@master ~]# hadoop/bin/hadoop dfsadmin -refreshNodes

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: