启动hadoop时,datanode未能正常启动

  • 启动hdfs时,查看进程发现没有datanode进程
[hadoop@hadoop001 sbin]$ start-dfs.sh 
Starting namenodes on [hadoop001]
hadoop001: starting namenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-namenode-hadoop001.out
hadoop001: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-datanode-hadoop001.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-secondarynamenode-hadoop001.out

[hadoop@hadoop001 sbin]$ jps
2770 ResourceManager
2883 NodeManager
5880 SecondaryNameNode
5995 Jps
5599 NameNode
  • 尝试单独启动datanode,发现还是不行
[hadoop@hadoop001 sbin]$ hadoop-daemon.sh start datanode
starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-datanode-hadoop001.out

[hadoop@hadoop001 sbin]$ jps
2770 ResourceManager
2883 NodeManager
5880 SecondaryNameNode
6107 Jps
5599 NameNode
  • 然后到hadoop日志目录下查看datanode得日志信息
    报错信息如下:
2019-08-26 08:11:56,368 WARN org.apache.hadoop.hdfs.server.common.Storage: Failed to add storage directory [DISK]file:/tmp/hadoop-hadoop/dfs/data/
java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-hadoop/dfs/data: namenode clusterID = CID-56cb1b3a-d272-4b55-a560-93d34f3ea536; datanode clusterID = CID-f06280d7-1870-452d-a155-419b58c23f55
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:779)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:302)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:418)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:397)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:575)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1560)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1520)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:354)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:219)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:673)
        at java.lang.Thread.run(Thread.java:745)
2019-08-26 08:11:56,371 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN, trace:
java.lang.Exception
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.getBlockPoolId(BPOfferService.java:190)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.hasBlockPoolId(BPOfferService.java:200)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.shouldRetryInit(BPOfferService.java:799)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.shouldRetryInit(BPServiceActor.java:712)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:678)
        at java.lang.Thread.run(Thread.java:745)
2019-08-26 08:11:56,371 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid c7fd2b2f-13af-4ec2-9d60-17a9122bc43d) service to hadoop001/172.19.6.118:9000. Exiting.
java.io.IOException: All specified directories are failed to load.
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:576)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1560)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1520)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:354)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:219)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:673)
        at java.lang.Thread.run(Thread.java:745)
2019-08-26 08:11:56,371 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool <registering> (Datanode Uuid c7fd2b2f-13af-4ec2-9d60-17a9122bc43d) service to hadoop001/172.19.6.118:9000
2019-08-26 08:11:56,472 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN, trace:
java.lang.Exception
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.getBlockPoolId(BPOfferService.java:190)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.hasBlockPoolId(BPOfferService.java:200)
        at org.apache.hadoop.hdfs.server.datanode.BlockPoolManager.remove(BlockPoolManager.java:91)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.shutdownBlockPool(DataNode.java:1475)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.shutdownActor(BPOfferService.java:437)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.cleanUp(BPServiceActor.java:457)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:707)
        at java.lang.Thread.run(Thread.java:745)
2019-08-26 08:11:56,473 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool <registering> (Datanode Uuid c7fd2b2f-13af-4ec2-9d60-17a9122bc43d)
2019-08-26 08:11:56,473 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN, trace:

此时会发现问题所在:
namenode clusterID = CID-56cb1b3a-d272-4b55-a560-93d34f3ea536
datanode clusterID = CID-f06280d7-1870-452d-a155-419b58c23f55
是由于这两个id不一致导致的

  • 解决办法
    方法1: 根据日志中的路径:/tmp/hadoop-hadoop/dfs/data (该路径在root用户下)
[root@hadoop001 dfs]# ll
总用量 12
drwx------ 3 hadoop hadoop 4096 8月  26 08:48 data
drwxrwxr-x 3 hadoop hadoop 4096 8月  26 08:33 name
drwxrwxr-x 3 hadoop hadoop 4096 8月  26 08:33 namesecondary

# 将name/current/VERSION 文件中的 clusterID的值 
#拷贝到 name/current/VERSION 文件中的 clusterID的=后面 
# 也就是让name data两个的clusterID保持一致

方法2: 直接删除data name下面的文件夹,重新格式化namenode

  • 重新启动
[hadoop@hadoop001 sbin]$ start-dfs.sh
Starting namenodes on [hadoop001]
hadoop001: namenode running as process 5599. Stop it first.
hadoop001: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-hadoop-datanode-hadoop001.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: secondarynamenode running as process 5880. Stop it first.
[hadoop@hadoop001 sbin]$ jps
2770 ResourceManager
2883 NodeManager
5880 SecondaryNameNode
6331 DataNode  # 正常启动
6556 Jps
5599 NameNode
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、系统参数配置优化 1、系统内核参数优化配置 修改文件/etc/sysctl.conf,添加如下配置,然后执行s...
    张伟科阅读 3,961评论 0 14
  • 二 、 HDFS体系结构 HDFS 采用的是master/slave架构设计 , 一个HDFS集群包含一个单独的 ...
    什么都不会的码农丶阅读 1,662评论 0 1
  • 1.简介 Hadoop是一款开源的大数据通用处理平台,其提供了分布式存储和分布式离线计算,适合大规模数据、流式数据...
    哦00阅读 980评论 0 0
  • 翻译: http://hadoop.apache.org/docs/stable/hadoop-project-d...
    金刚_30bf阅读 563评论 0 0
  • 敲门 听见敲门声,我问:“谁啊?”无人应。 我提高声调又问:“谁啊?”还是没人理我。 我有点怒了吼道:“谁!” 只...
    小热汽车段子阅读 764评论 0 0

友情链接更多精彩内容