2013-11-22 50 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空間沒有得到清理;)