Hadoop集群中DataNode启动不了问题处理

服务器

浏览数:125

2020-6-22

    在启动Hadoop集群时,往往会出现这样或那样的问题,比如节点中DataNode进程启动不了,很是让人头疼,下面说下具体的解决办法(复杂版),简单版见最后

    (1)停止关于Hadoop的所有进程

    (2)删除每个节点Hadoop目录下 logs 和 tmp 文件夹,命令如下:

sudo rm -rf logs
sudo rm -rf tmp

    (3)手动重新创建每个节点下 logs 和 tmp 文件夹,命令如下:

mkdir logs
mkdir tmp

    (4)cd到Hadoop/bin目录下,重新格式化:

hdfs namenode -format

    没有问题后,重新启动hadoop集群,DataNode进程成功启动。

    具体的原因还是:

    datanode的clusterID 和 namenode的clusterID 不匹配

    成功启动DataNode进程后,我们可以查看各节点tmp目录下文件。

    作为namenode节点,其文件目录为:hadoop/tmp/dfs/name/current;

    作为datanode节点,其文件目录为:hadoop/tmp/dfs/data/current;

    在目录下我们使用 cat 命令查看 VERSION 文件,分别为:

[hadoop@slave01 current]$ cat VERSION 
#Mon Jun 25 10:15:16 CST 2018
namespaceID=2112363039
clusterID=CID-5a83590f-0667-49f7-a7ee-c27165216e28
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1317085386-127.0.0.1-1529892916541
layoutVersion=-63
[hadoop@slave02 current]$ cat VERSION 
#Mon Jun 25 10:16:52 CST 2018
storageID=DS-554910b7-5a75-4a41-a7c2-4f9d137dfd9d
clusterID=CID-5a83590f-0667-49f7-a7ee-c27165216e28
cTime=0
datanodeUuid=3cdb4500-3548-471e-86bc-7daea441fb26
storageType=DATA_NODE
layoutVersion=-56

    可以看出:namenode和datanode的clusterID是一致的。

    所以,重新格式化的操作不要随便使用,这可能导致两个clusterID不一致,引起进程启动不了的问题,网上也有说不用重新格式化和删除目录,而是通过将namenode下的clusterID复制到datanode下的clusterID,覆盖掉原来的,让两个保持一致,这种方式没试过,不知道好使不好使,大家可以尝试下(该方式已被证实,亲测可用哦)。

作者:海岸线的曙光