本文主要是介绍hadoop中datanode无法启动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘要:该文档解决了多次格式化文件系统后,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>
这篇关于hadoop中datanode无法启动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!