在Apache Hadoop2.0版本中,测试如果DataNode更改HostName或者IP地址,会引起什么样的情况发生。
1 测试环境
操作系统:CentOS 6.2
Hadoop版本:Apache Hadoop2.0.2
Block副本数:2个
节点部署:
NodeType |
HostName |
IP |
NameNode |
sdc1 |
10.28.169.121 |
NameNode |
sdc2 |
10.28.169.122 |
DataNode2 |
Tdatanode0 |
10.28.169.126 |
DataNode1 |
sdc2 |
10.28.169.122 |
DataNode0 |
datanode0 |
10.28.169.225 |
2测试类别
由于机器的限制,在环境中只用了三个DataNode,其中为了方便测试,在DataNode0和DataNode2节点上只部署数据节点,在测试中修改DataNode的HostName和IP只针对DataNode0节点。我们分为两种情况进行测试,在Hadoop集群其中之后:第一种,修改DataNode0的HostName,观察和分析HDFS集群的状态变化;第二种,修改DataNode0的IP地址,观察和分析HDFS集群的状态变化。
2.1 更改DataNode的HostName
在修改DataNode0节点的HostName之前,首先记录下NN端和DN(DataNode0节点)端的VERSION文件中的版本ID,便于对比。
DN端有两个VERSION文件:
(1)DN-VERSION文件1:
所在路径:
/data/hadoop2.0_dn/current/BP-2147169311-10.28.169.122-1355378443940/current
内容:
namespaceID=1728141100
cTime=0
blockpoolID=BP-2147169311-10.28.169.122-1355378443940
layoutVersion=-40
(2)DN-VERSION文件2:
所在路径:
/data/hadoop2.0_dn/current
内容:
storageID=DS-382431371-10.28.169.225-50010-1355324528657
clusterID=hadoop2.0
cTime=0
storageType=DATA_NODE
layoutVersion=-40
NN端也有一个版本文件:
(1) NN-VERSION文件1:
路径:
/data/hadoop2.0_nn_edits/current
内容:
namespaceID=1728141100
clusterID=hadoop2.0
cTime=0
storageType=NAME_NODE
blockpoolID=BP-2147169311-10.28.169.122-1355378443940
layoutVersion=-40
(2) NN-VERSION文件2:
路径:
/data/hadoop2.0_nn_fsimage/current
内容:
namespaceID=1728141100
clusterID=hadoop2.0
cTime=0
storageType=NAME_NODE
blockpoolID=BP-2147169311-10.28.169.122-1355378443940
layoutVersion=-40
更改DataNode0的HostName之前,首先来看下在HDFS的web界面中向NameNode注册的数据节点信息,截图如下:
可以看到三个DataNode都正常提供服务。
现在,在DataNode0节点上,利用hostname命令更改节点的hostname,并且更改/etc/hosts文件中的hostname列表,新的hostname为ddd。更改之后,web界面上,以及DataNode0本机的日志均未有异常出现,web界面上的数据节点名字未改变还是原来的DataNode名字:
把DataNode0节点利用hadoop-daemon.sh stop datanode命令停止其服务,之后:
(1)若在web界面上等待约630秒之后,DN判断DataNode0节点已经死去,Live数据节点个数变为2。
此时,把DataNode0节点利用hadoop-daemon.sh start datanode命令重新开启数据节点服务。DataNode0端无异常情况出现,HDFS的web界面发生变化:
此时,datanode0节点的名字变为ddd,并且NN有如下日志打印,判定DN死亡的时候,会remove掉,DN服务重启的时候,会增加进来:
2012-12-17 17:21:37,697 INFO org.apache.hadoop.net.NetworkTopology: Removing a node: /default-rack/10.28.169.231:50010
2012-12-17 17:21:37,697 INFO org.apache.hadoop.net.NetworkTopology: Removing a node: /default-rack/10.28.169.231:50010
2012-12-17 17:21:37,698 INFO org.apache.hadoop.net.NetworkTopology: <