Hadoop 2.6.4集群启动报错java.io.IOException: All specified directories are fail

    xiaoxiao2023-12-04  155

    之前在自己本地的电脑上安装了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界面可以看到节点已经正常启动

    问题解决

    最新回复(0)