在配置HADOOP集群的时候,已经配好了Master和一个Slave(Slave1),为了测试了负载均衡,于是想在该集群里添加一个新的Slave节点(Slave2),因为实在不想再新建一个虚拟机,重新在里面安装CENTOS,然后做一系列配置。于是直接克隆了Slave1作为了新的Slave2。
修改了Slave2的配置文件后,本以为已经万事大吉。然而在启动HADOOP集群时发现datanode产生了冲突异常。只要我的Slave1节点的datanode启动了,那么Slav2节点的datanode也就失效了。同样的,Slave2的有了,Slave1的datanode也就关闭了。在Hadoop的web接口,发现集群的Live Node始终为一。
在网上查了资料,有文章说是因为namenode和datanode的NAMESPACEID不一致造成的。(参考网址:http://blog.csdn.net/bluesky8640/article/details/6970099),但是我检查了一遍,发现NAMESPACEID都是一样的。
正当百愁莫展时,突然发现在datanode的VESION文件里下面的一行storageID里面是有IP地址的。而因为我是直接克隆过来Slave2里的VESION文件还是用着原来Slave1的IP地址的。于是修改了一下。重新启动了一下HADOOP集群,问题得解。