关闭集群./stop-all.sh
,然后调用hadoop namenode -format
后,我看到datanode具有相同的磁盘空间,即空间尚未释放。
为什么?
答案 0 :(得分:3)
您可以在格式化NameNode
之前手动删除DataNode上的数据<强> 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 :(得分:3)
在格式化namenode时,空格不会被清除。人们必须手动完成。
要做到这一点,
首先按正确的顺序调用./stop-all.sh
或./stop-mapred.sh
和./stop-dfs.sh
来停止群集。
然后删除datanode的数据目录,即dfs.data.dir
中hdfs-site.xml
或hadoop.tmp.dir
/ dfs / data
在执行格式之前执行-rmr
(在此问题的其他一个答案中指定)的选项实际上是最好的方法,除非你像我一样在不知不觉中格式化了namenode然后才意识到datanode空间没有得到清理;)
答案 2 :(得分:2)
格式化Namenode不会格式化Datanode。
它只会格式化namenode的内容。即,你的名字节点将不再知道 你的数据在哪里。 namenode -format还会为namenode
分配一个新的命名空间ID您必须更改datanode中的namespaceID才能使datanode正常工作。 这将是dfs / data / current / VERSION
现在有一个JIRA打开同样建议格式化Datanode以及格式化Namenode时。 HDFS-107