Hadoop系列--datanode无法启动及Incompatible namespaceIDs问题的解决

1 问题描述

  使用jps命令查看Hadoop进程启动情况,发现datanode总是启动不起来。查看log,如下:
  

2017-08-11 14:46:04,213 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /hadoop/data: namenode namespaceID = 179997037; datanode namespaceID = 331494645

2 运行环境

  ubuntu16.04 + hadoop1.2.1 + JDK1.8

3 问题原因

  log中已经给出了问题的原因:
  

Incompatible namespaceIDs in /hadoop/data: namenode namespaceID = 179997037; datanode namespaceID = 331494645

  两个namespacesID出现冲突。
  事实上是因为每次namenode format都会生成datanode信息,导致冲突。

4 问题解决

  查阅了好多资料,没有找到一个永久的解决方法。
  下面的两个解决方法可以作为参考,其中第二个是我采用的方法,缺点就是每次format之前都要手动删除{dfs.data.dir}/data/目录,很麻烦。
  首先查看core-site.xml和hdfs-site.xml文件中{dfs.data.dir}和{dfs.name.dir}的位置。

4.1 失败的解决方法

  按照blog的提示,修改{dfs.data.dir}/current/VERSION和{dfs.name.dir}/VERSION中namespaceID,使两者一致。
  具体解决步骤如下:
1.stop the datanode
  命令

bin/stop-all.sh

2.修改{dfs.data.dir}/current/VERSION和{dfs.name.dir}/VERSION中namespaceID
  文件大体内容如下:

#Fri Aug 11 15:45:09 CST 2017
namespaceID=1420739432
storageID=DS-1137050874-127.0.1.1-50010-1502437509662
cTime=0
storageType=DATA_NODE
layoutVersion=-41

3.restart the datanode

4.2 成功的解决方法

1.stop the datanode
  命令

bin/stop-all.sh

2.手动删除{dfs.data.dir}/data/目录
  首先查看core-site.xml和hdfs-site.xml文件中{dfs.data.dir}和{dfs.name.dir}的位置;然后手动删除{dfs.data.dir}/data/目录。
3.restart the datanode

5 优化解决

  能否找到一个更好的方法,不用每次都要手动删除{dfs.data.dir}/data/目录,太麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值