2013-11-22 52 views

回答

3

您可以格式化的NameNode

RMR的删除

Usage: hadoop fs -rmr URI [URI …] 

递归版本之前手动删除数据节点的数据。 实施例:

hadoop fs -rmr /user/hadoop/dir 
hadoop fs -rmr hdfs://nn.example.com/user/hadoop/dir 

退出代码:

成功返回0和-1。


备选地

每当名称节点是数据节点应该被重新格式化。我在这里看到两种方法:

  1. 为了重新格式化集群,我们称之为“start-dfs -format”或者创建一个特殊的脚本“format-dfs”。这会将集群组件全部格式化在一起。问题是它是否应该在格式化后启动集群?
  2. 仅格式化名称节点。当数据节点连接到名称节点时,如果它看到名称空间为空且其cTime = 0,它将告诉它们以 格式化它们的存储目录。 这种方法的缺点是,如果错误地连接到空名称节点,我们可以从另一个集群中释放数据节点块。

https://issues.apache.org/jira/browse/HDFS-107

2

格式化Namenode不会格式化Datanode。

它只会格式化您的namenode的内容。即,您的namenode将不再知道您的数据所在的地方为 。另外namenode -format会为namenode分配一个新的名称空间ID

您将不得不在datanode中更改namespaceID以使您的datanode正常工作。 这将是在dfs /数据/电流/版本

有一个JIRA现在打开相同的建议格式Datanode以及格式Namenode。 HDFS-107

2

格式化名称节点,空间没有得到清理。人将不得不手动。

要做到这一点,

首先通过在正确的顺序调用./stop-all.sh./stop-mapred.sh./stop-dfs.sh停止集群。

然后删除datanode的数据目录,即i。Ë或者通过dfs.data.dirhdfs-site.xmlhadoop.tmp.dir/DFS /数据

的选项指定的目录做-rmr做了格式其实是最好的办法,除非你之前(在对方回答这个问题的一个指定)和我一样,不知不觉地格式化了namenode,然后意识到datanode空间没有得到清理;)