0
hadoop中的NameNode不存儲塊信息。它保存在內存中,啓動時DataNodes報告塊信息。Hadoop:NameNode如何知道哪些塊對應於一個文件?
如果我將文件copyFromLocal複製到hdfs,它會轉移到hdfs,因爲我可以看到「hadoop fs -ls」。
我想知道Hadoop如何知道哪個文件名對應哪個塊。
hadoop中的NameNode不存儲塊信息。它保存在內存中,啓動時DataNodes報告塊信息。Hadoop:NameNode如何知道哪些塊對應於一個文件?
如果我將文件copyFromLocal複製到hdfs,它會轉移到hdfs,因爲我可以看到「hadoop fs -ls」。
我想知道Hadoop如何知道哪個文件名對應哪個塊。
NameNode維護一個File System Image
,它存儲文件 - >塊之間的映射。它還存儲edit log
,該文件保留對文件系統的任何編輯。輔助名稱節點定期從名稱節點讀取文件系統映像和編輯日誌,並將它們組合起來爲NameNode創建新的文件系統映像。
這是令人困惑的。在文檔中它說它不存儲任何塊信息,但是所以文件系統映像是從文件到塊的映射?那麼它是否阻止ID? – user3111525 2014-09-24 21:24:27
好的,這篇文章有很好的描述: https://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf – user3111525 2014-09-24 21:50:35
檢查出第9節 - 從上面的鏈接中獲得文件系統元數據的持久性。它解釋了你感到困惑的概念。 NameNode確實不存儲實際的塊本身。塊由datanode存儲。但是,NameNode確實存儲了文件 - >塊之間的映射。 – Chaos 2014-09-25 18:36:59