我尝试使用bin / start-all.sh启动namenode。但是,这个命令不会启动namenode。我知道如果我做bin / hadoop namenode -format,namenode会启动,但在这种情况下,我将丢失所有数据。有没有办法在不格式化的情况下启动namenode? p>
答案 0 :(得分:3)
您的问题可能与以下内容有关:
Hadoop默认将其NameNode数据写入/ tmp / hadoop-文件夹,每次重启后都会将其清除。
将以下属性添加到conf / hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value><path to your desired folder></value>
</property>
&#34; dfs.name.dir&#34; property允许您控制Hadoop写入NameNode元数据的位置。
答案 1 :(得分:1)
bin/start-all.sh
应该启动namenode,以及datanode,jobtracker和tasktrackers。因此,请检查namenode的日志以查找可能的错误。
跳过启动jobtracker和tasktrackers并启动namenode(和datanode)的另一种方法是使用以下命令:
bin/start-dfs.sh
实际上,bin/start-all.sh
相当于使用命令:
bin/start-dfs.sh
,它启动namenode和datanodes以及
bin/start-mapred.sh
,它启动了jobtracker和tasktrackers。
有关详细信息,请访问this page。