2015-02-07 101 views
1

嗨,我正在學習hadoop,我有一個簡單的愚蠢問題:在我關閉HDFS(通過調用hadoop_home/sbin/stop-dfs.sh)後,HDFS上的數據丟失了還是可以恢復?如果你停止HDFS關閉hadoop HDFS後數據丟失了?

回答

7

的數據不會丟失,只要你NameNode和DataNode會的數據存儲在持久位置使用的屬性所指定:

  • dfs.namenode.name.dir - >確定,其中在本地文件系統的DFS名稱節點應該存儲名稱表(fsimage)。如果這是一個以逗號分隔的目錄列表,則名稱表將被複制到所有目錄中,以實現冗餘。默認值:file://${hadoop.tmp.dir}/dfs/name
  • dfs.datanode.data.dir - >確定本地文件系統上DFS數據節點應該存儲其塊的位置。如果這是以逗號分隔的目錄列表,則數據將存儲在所有已命名的目錄中,通常位於不同的設備上。不存在的目錄被忽略。默認值:file://${hadoop.tmp.dir}/dfs/data

正如你可以看到,這兩個屬性的默認值指向${hadoop.tmp.dir}默認爲/tmp。您可能已經知道基於Unix的系統中的/tmp中的數據在重新引導時被清除。

因此,如果您要指定除/tmp之外的dir位置,則重啓時的Hadoop HDFS守護程序將能夠讀回數據,因此即使在羣集重新啓動時也不會丟失數據。

0

請確定你是不是刪除存儲在HDFS數據的元數據,這可以簡單地實現,如果你保持dfs.namenode.name.dirdfs.datanode.data.dir untouced,是指不刪除路徑存在於目前在hdfs-site.xml文件中的這些標籤。