Hadoop - namenode无法启动

20

我想以root用户身份运行Hadoop,我执行了格式化命令hadoop namenode -format,当时Hadoop文件系统正在运行。

此后,当我尝试启动名称节点服务器时,它显示以下错误:

13/05/23 04:11:37 ERROR namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.IOException: NameNode is not formatted.
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:330)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:411)

我尝试搜索任何解决方案,但没有找到清晰的解决方案。

有人能建议吗?

谢谢。


2
你启动了HDFS守护进程吗?看这里,或许会有帮助:http://blog.abhinavmathur.net/2013/01/experience-with-setting-multinode.html - abhinav
谢谢Abhinav。你的链接给了我答案。 - balanv
为什么要在守护进程运行时格式化 HDFS? - Tariq
错误地做了那件事...之后我才知道,我不应该那样做... - balanv
@abhinav的链接已经失效了,移动到其他地方了吗? - Shashank Gb
9个回答

28

DFS需要进行格式化。在停止所有操作后,只需输入以下命令,然后重新启动即可。

hadoop namenode -format

24

太棒了,我找到了解决方案。

停止所有正在运行的服务器

1) stop-all.sh 

编辑文件/usr/local/hadoop/conf/hdfs-site.xml,如果缺少以下配置,请添加:

<property>
    <name>dfs.data.dir</name>
    <value>/app/hadoop/tmp/dfs/name/data</value> 
    <final>true</final> 
    </property> 
    <property> 
    <name>dfs.name.dir</name>
    <value>/app/hadoop/tmp/dfs/name</value> 
    <final>true</final> 
</property>

启动HDFS和MapReduce守护进程

2) start-dfs.sh
3) start-mapred.sh

然后按照此链接中给出的步骤运行MapReduce示例。

注意:如果直接命令无法运行,则应运行bin/start-all.sh命令。


5
提醒一下,我需要格式化namenode。bin/hadoop namenode -format - erencan
2
是的。如果我们只使用“hadoop namenode -format”遇到任何问题,我们可以使用命令“hadoop namenode -format -force”。 - balanv
完成这个操作后,甚至DataNode也不再出现在JPS上了 :( - kesarling He-Him

2

当namenode停止时,请格式化hdfs(就像最佳答案一样)。

我添加了更多细节。

FORMAT命令将检查或创建path/dfs/name,并初始化或重新初始化它。然后运行start-dfs.sh会运行namenode、datanode,然后是namesecondary。当namenode检查不存在的path/dfs/name或未初始化时,会发生致命错误,然后退出。这就是为什么namenode无法启动的原因。

您可以在HADOOP_COMMON/logs/XXX.namenode.log中查看更多详细信息。


1
确保您指定的NameNode目录完全为空。 目录中类似“lost+found”的文件夹将触发此错误。

0

请确保在hdfs-site.xml文件中正确列出了名称目录(dfs.name.dir)和数据目录(dfs.data.dir)


0

格式化namenode对我有用

bin/hadoop namenode -format

0

hdfs-site.xml文件中的值是错误的。您输入了错误的文件夹,这就是为什么命名节点无法启动的原因。


0

首先创建 [文件夹],然后设置 hdfs-site.xml,最后格式化


0

经过大量搜索找到了解决方案 打开终端 并运行

stop-all.sh

hadoop namenode -format

start-all.sh

在 Model Coding 的 YouTube 频道社区帖子中找到了这个答案: 帖子链接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接