阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop 启动节点Datanode失败解决

214次阅读
没有评论

共计 5726 个字符,预计需要花费 15 分钟才能阅读完成。

当我动态添加一个 Hadoop 从节点的之后,出现了一个问题:

[root@hadoop current]# hadoop-daemon.sh start datanode
starting datanode, logging to /usr/local/hadoop1.1/libexec/../logs/hadoop-root-datanode-hadoop.out
[root@hadoop ~]# jps
jps 命令发现没有 datanode 启动,所以去它提示的路径下查看了 hadoop-root-datanode-hadoop.out 文件,可以是空白的。
后来在该路径下发现了 /usr/local/hadoop1.1/logs/hadoop-root-datanode-hadoop.log 文件
 
查看日志文件
[root@hadoop current]# vim /usr/local/hadoop1.1/logs/hadoop-root-datanode-hadoop.log
STARTUP_MSG:  version = 1.1.2
STARTUP_MSG:  build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1 -r 1440782; compiled by ‘hortonfo’ on Thu Jan 31 02:03:24 UTC 2013
************************************************************/
2014-10-31 19:24:28,543 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2014-10-31 19:24:28,565 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2014-10-31 19:24:28,566 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2014-10-31 19:24:28,566 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2014-10-31 19:24:28,728 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2014-10-31 19:24:29,221 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /usr/local/hadoop/tmp/dfs/data: namenode namespaceID = 942590743; datanode namespaceID = 463031076
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:399)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:309)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1651)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1590)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)

2014-10-31 19:24:29,229 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at hadoop/192.168.0.100
************************************************************/

 
读日志文件:
先看到 ERROT 信息中 Incompatible 这个单词,意思是“不相容的”。所以我们可以看出是 datanode 的 namespaceID 出错了。
所以最后 shutDown 了。
 
解决思路:
(1)先去 hadoop 路径下的配置文件hdfs-site.xml,看看:
[root@hadoop current]# vim /usr/local/hadoop1.1/conf/hdfs-site.xml
…………………………………………………………………………………………………………………….
<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2014-11/configuration.xsl”?>

<!– Put site-specific property overrides in this file. –>

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>${hadoop.tmp.dir}/dfs/name</value>
        <description>this is a comma-delimited list of directories
          then the name table is replicated in all of the directories,
          for redunancy.
        </description>
    </property>
</configuration>

…………………………………………………………………………………………………………………….
里面并没有有关 datanode 的配置信息,如果你有类似于下面的内容:
<property>  
                <name>dfs.data.dir</name>  
                <value>/data/hdfs/data</value>
 </property> 
说明你的 datanode 配置文件不再默认路径,而是你自己设置过的路径下。
 
(2)进入 datanode 的  dfs.data.dir  的 current 目录,修改里面的文件 VERSION
由于我是默认的,所以路径是 /usr/local/hadoop/tmp/dfs/data/current/VERSION。
这个版本不同,可能路径也不同,最好自己去找找。
[root@hadoop current]# vim /usr/local/hadoop/tmp/dfs/data/current/VERSION
…………………………………………………………………………………………………………………….
#Thu Oct 30 04:52:01 PDT 2014
namespaceID=463031076
storageID=DS-1787154912-192.168.0.100-50010-1413940826285
cTime=0
storageType=DATA_NODE
layoutVersion=-32
…………………………………………………………………………………………………………………….
看里面的 namespaceID=463031076, 可以发现,跟 hadoop-root-datanode-hadoop.log 中的 datanode namespaceID = 463031076 的一样,这说明他是读取这个文件的,所以我们没有找错。
 
(3)修改这个版本信息文件VERSION
ID 与 hadoop-root-datanode-hadoop.log 中 namenode namespaceID = 942590743 一致
 
ps:我想大家应该可以想到 namenode namespaceID 是从哪里来的:
[root@hadoop current]# vim /usr/local/hadoop/tmp/dfs/name/current/VERSION
…………………………………………………………………………………………………………………….
#Fri Oct 31 19:23:44 PDT 2014
namespaceID=942590743
cTime=0
storageType=NAME_NODE
layoutVersion=-32
…………………………………………………………………………………………………………………….
这里的 ID 是不是与 hadoop-root-datanode-hadoop.log 中 namenode namespaceID = 942590743 一致?
 
(4)修改完以后,重新运行datanode
[root@hadoop current]# hadoop-daemon.sh start datanode
[root@hadoop current]# jps
8581 DataNode
看到 DataNode, 说明已经跑起来了。

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5726字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中