xioaxu790 发表于 2014-5-31 08:49:12

hadoop 完全分布式 下 datanode无法启动解决方法

问题导读:
1、hadoop 完全分布式 和伪分布式下 datanode无法启动的原因?

2、怎么解决?

static/image/hrline/4.gif


问题描述:
在集群模式下更改节点后,启动集群发现 datanode一直启动不起来。
我集群配置:有5个节点,分别为master slave1-5 。
在master以hadoop用户执行:start-all.sh
jps查看master节点启动情况:
   NameNode      
         JobTracker
         SecondaryNameNode

均已经正常启动,利用 master:50070 , Live Nodes 为0, 随进入 slave1:
ssh slave1,输入命令 jps ,发现只有 TaskTracker 而没有DataNode。随后看日志

上网查找解决方法,最后终于解决了,解决方法如下:
1. 先执行stop-all.sh暂停所有服务
2. 将所有Salve节点上的tmp(即 hdfs-site.xml 中指定的 dfs.data.dir 文件夹,DataNode存放数据块的位置)、 logs 文件夹删除 , 然后重新建立tmp , logs 文件夹
3. 将所有Salve节点上的/usr/hadoop/conf下的core-site.xml删除,将master节点的core-site.xml文件拷贝过来,到各个Salve节点
scp /usr/hadoop/conf/core-site.xml   hadoop@slave1:/usr/hadoop/conf/
4. 重新格式化: hadoop namenode -format
5. 启动:start-all.sh

注:这是我碰到的情况,不见得是你遇到的问题,基本上从以下几个方面解决问题:
      1. 检查各个xml文件是否配置正确
      2. java环境变量配置是否正确
      3. ssh是否无密码互通
      4, Hadoop离开安全模式,hadoop dfsadmin -safemode leave。

也可以参考这个:伪分布式下datanode无法启动问题
例子如下:
1. 环境描述:
虚拟机7.1.4,Ubuntu 10.10,伪分布式安装Hadoop。


2. 问题描述:
多次格式化文件系统时:
$ bin/hadoop namenode -format会出现datanode无法启动。


3. 问题产生原因:
执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。


4. datanode启动日志:
/home/xsj/hadoop/hadoop-0.20.2/logs/hadoop-xsj-datanode-xsj-virtual-machine.log.XXXX-XX-XX
查看日志发现:
************************************************************/
2012-05-28 17:40:59,973 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/xsj/hadoop/hadoop-0.20.2/hdfs/data: namenode namespaceID = 1525353449; datanode namespaceID = 1686950792


5. 解决方案:
把配置文件中dfs.data.dir在本地系统的路径下的current/VERSION文件中的namespaceID改为与dfs.name.dir在本地系统的路径下的current/VERSION文件中的namespaceID一样,例如:
dfs.data.dir为/home/xsj/hadoop/hadoop-0.20.2/hdfs/data
dfs.name.dir为/home/xsj/hadoop/hadoop-0.20.2/hdfs/name
打开/home/xsj/hadoop/hadoop-0.20.2/hdfs/name/current/VERSION文件:
#Wed May 30 09:51:09 CST 2012
namespaceID=1525353449
cTime=0
storageType=NAME_NODE
layoutVersion=-18

打开/home/xsj/hadoop/hadoop-0.20.2/hdfs/data/current/VERSION文件:
#Thu May 24 17:23:11 CST 2012
namespaceID=1686950792
storageID=DS-1689019725-127.0.1.1-50010-1337851391704
cTime=0
storageType=DATA_NODE
layoutVersion=-18

修改为:
#Thu May 24 17:23:11 CST 2012
namespaceID=1525353449
storageID=DS-1689019725-127.0.1.1-50010-1337851391704
cTime=0
storageType=DATA_NODE
layoutVersion=-18


6. 重启后执行jps命令:



下一篇
hadoop datanode启动不起来:解决办法二

mymvsy 发表于 2014-6-10 17:33:26

对我们这些新手来说很不错的讲解,

haric 发表于 2015-1-9 17:33:52


不错,好好学习一下!

chinaboy2005 发表于 2015-1-10 19:32:00

不错,好好学习一下!

非鱼 发表于 2015-3-20 12:10:51

非常棒!!!很详细!!!

非鱼 发表于 2015-3-21 19:38:01

还有可能是VERSION中的clusterID不一致而产生这个问题,修改下即可。我的就是这个问题

cjz 发表于 2015-4-17 11:42:16

版主我也遇到了这个问题 但我照着你的方法改还是启动不了datanode 能发下你的xml配置吗
完全分布式我弄的是

xiaomo346377905 发表于 2017-1-1 23:41:01

为什么我的data文件夹里没有任何文件啊
页: [1]
查看完整版本: hadoop 完全分布式 下 datanode无法启动解决方法