对于我的Hadoop实验,我在我的macbook上的localhost上设置了单节点HDFS。 每次实验结束后,我都会关闭hadoop服务(./bin/stop-all.sh)。
几乎每当我再次启动我的设置(start-all.sh)时,我发现我的HDFS已损坏,我总是需要格式化我的namenode并重新启动服务以再次访问HDFS。
我意识到这一点,因为我在启动后停止获取namenode管理员访问权限(http:// localhost:50070 /)。
在启动期间,我的namenode日志说 “2012-11-29 15:27:43,460 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem:FSNamesystem初始化失败。 org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:Directory / private / tmp / hadoop-rupadhyay / dfs / name处于不一致状态:存储目录不存在或无法访问。“
我不确定我在这里缺少什么。
答案 0 :(得分:4)
使用tmp目录意味着每次重新启动时都必须确保清除目录并重新格式化名称节点。这是因为操作系统可能会从tmp目录中随意删除文件,使您的hdfs处于不稳定状态。
答案 1 :(得分:4)
我遇到了同样的问题并且google解决了一些问题,core-site.xml中的hadoop.tmp.dir默认为/ tmp / hadoop-username,每次重启都会清除它。你可以将其更改为其他目录。一个例子是
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:54310</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hdfs-tmp</value>
</property>
</configuration>
此链接也很有用Namenode not getting started