Hadoop 2.6.4集群启动报错java.io.IOException: All specified directories are fail
之前在自己本地的电脑上安装了3个linux机器来搭建hadoop集群,前面一段时间是使用三台来进行练习,后面发现电脑内容有点紧,就切换为两台。最近给电脑加了内存之后,就想把三台一起启动了。但是发现之前一直没用的那台没能起来,就去查看日志。
到mini3机器的日志目录,查看日志:
由错误日志可以看出来是当前机器的集群id和nameNode的集群id不相同,导致该节点无法加入集群
通过查看java进程也能看到该机器上的datanode没有启动。
从ui界面也能确定目前是只有2个节点
解决办法:
从网友给出来的解决办法有两种:
(1)重新格式化namenode
直接删除tmp/dfs,然后格式化hdfs即可(./hdfs namenode -format)重新在tmp目录下生成一个dfs文件
但是因为集群中已经有部分数据,这跟生产上是一样的【不能随意删除数据】
所以我没有采用这种方式
(2)修改VERSION文件即可,将nameNode里version文件夹里面的内容修改成和namenode一致的
这种方式符合我的预期,所以我就采用了这种方式。具体操作步骤如下
a)比较namenode和正常启动的datanode的信息
namenode上的信息
正常的datanode上的信息
b)查看没有正常启动的datanode上的信息
可以看到该节点的信息和集群id和namenode的都不是不一样的,所以就不能加入集群
c)把正常启动的datanode上的BP-XXX 拷贝到没启动的机器上,并删除没启动机器上原来的BP-XXX
4)修改正常启动的datanode上的VERSION文件的集群id
检查信息是否一致
信息一致之后,重新启动集群
通过ui界面可以看到节点已经正常启动
问题解决