HDFS 在我的单节点实验性本地设置中损坏了 namenode

Posted

技术标签:

【中文标题】HDFS 在我的单节点实验性本地设置中损坏了 namenode【英文标题】:HDFS corrupts namenode in my singe node experimental local setup 【发布时间】:2012-11-29 23:39:15 【问题描述】:

对于我的 Hadoop 实验,我在我的 macbook 上的 localhost 上设置了单节点 HDFS。 每次实验后,我都会关闭 hadoop 服务 (./bin/stop-all.sh)。

几乎每次我再次启动我的设置 (start-all.sh) 时,我都会发现我的 HDFS 已损坏,我总是需要格式化我的名称节点并重新启动服务才能再次访问 HDFS。

当我在启动后停止获取 namenode 管理员访问权限 (http://localhost:50070/) 时,我意识到了这一点。

在启动期间,我的 namenode 日志说 “2012-11-29 15:27:43,160 错误 org.apache.hadoop.hdfs.server.namenode.FSNamesystem:FSNamesystem 初始化失败。 org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:目录/private/tmp/hadoop-rupadhyay/dfs/name 处于不一致状态:存储目录不存在或不可访问。”

我不确定我在这里缺少什么。

【问题讨论】:

【参考方案1】:

使用 tmp 目录意味着您必须确保在每次重新启动时清除目录并重新格式化您的名称节点。这是因为操作系统可能会随心所欲地从 tmp 目录中删除文件,从而使您的 hdfs 处于不稳定状态。

【讨论】:

完美,谢谢。让我从 /tmp 更改 HDFS【参考方案2】:

我遇到了同样的问题,谷歌解决了这个问题,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

【讨论】:

以上是关于HDFS 在我的单节点实验性本地设置中损坏了 namenode的主要内容,如果未能解决你的问题,请参考以下文章

HadoopHadoop 机架感知配置原理

hadoop之 hadoop 机架感知

hdfs datanode不回收本地磁盘空间,如果在关闭一段时间后重新启动

如何在hdfs中持久化namenode信息

重启后 HDFS 块损坏

将文件/块从 HDFS 复制到从节点的本地文件系统