您的位置:首页 > Web前端 > Node.js

hadoop中datanode无法启动

2013-06-10 09:27 483 查看
摘要:该文档解决了多次格式化文件系统后,datanode无法启动的问题

一、问题描述

当我多次格式化文件系统时,如

grid@masternode:~/hadoop$ bin/hadoop namenode -format

会出现datanode无法启动,查看slave节点的日志,发现包含如下信息:

2012-09-07 05:53:27,245 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:Incompatible namespaceIDs in
/home/grid/hadoop/data: namenode namespaceID = 1155419402; datanode namespaceID = 696660979

二、问题产生原因

当我们在master节点执行文件系统格式化命令时,会在master节点namenode数据文件夹即配置文件hdfs-site.xml中dfs.name.dir指明的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的最新namenode的版本。master节点的namespaceID每次格式化都刷新。

但是,slave节点的datanode数据文件夹即配置文件hdfs-site.xml中dfs.data.dir指明的路径)中保存的current/VERSION文件不会随着每次格式化都刷新,只保留了第一次格式化时master节点保存的namespaceID。

如果我们频繁的格式化namenode,那么slave节点的namespaceID就会与master节点的namespaceID不一致,因此就会造成上述错误。

三、解决办法

修改各slave节点的namespaceID与master节点保持一致。

附录:

hdfs-site.xml文件内容:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

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

<configuration>

<property>

<name>dfs.name.dir</name>

<value>/home/grid/hadoop/namedata</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/home/grid/hadoop/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

注意:dfs.name.dir默认指向/tmp文件,/tmp文件夹每次重启电脑都会清空,所以最好设置该属性,指向其它目录,比如上文配置文件中指向的/home/grid/hadoop/namedata。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: