2015-11-04 65 views
0

我只有10 MB大小的文件。我認爲在HDFS中,第一個文件消耗10 MB,剩餘54 MB被釋放到可用空間。 我的問題是 -HDFS - 塊大小相關

  1. 的10 MB(或10 MB的文件的下一個序列)的第二個文件將繼續增加,直到它成爲64 MB? 例如 - 如果我們消耗2塊64 MB的每塊和20 MB的第3塊,那麼輸入分割將產生3個輸出2 64MB和1 20MB?這是真的嗎?

回答

1

隨着從Hadoop的參考 - 權威指南

HDFS存儲小文件低效,因爲每個文件存儲在一個塊和塊元數據在存儲器中由名稱節點保持。因此,大量的小文件會在namenode上佔用大量內存。 (但是,請注意,小文件不會佔用比存儲文件的原始內容所需的更多磁盤空間。例如,存儲有塊大小爲128 MB的1 MB文件使用1 MB磁盤空間,而不是128 MB)。

所以你說得對:「HDFS第一個文件消耗10 MB,其餘54 MB被釋放到可用空間。」但是,HDFS塊不是一個物理存儲分配單元,而是一個邏輯存儲分配單元。所以它不會像它一直添加到這個塊中,直到它變爲64 MB或塊大小(隨着釋放磁盤空間將被添加到可用存儲)

映射器的數量取決於inputsplits的數量和招聘客戶端計算輸入分割上位於輸入路徑上運行的工作,而指定的HDFS數據。按照你的例子,它將創建3個輸入分割,2個64MB和1個20MB(假設默認的HDFS塊大小)。

0

塊大小(64MB或128MB)指的是文件分割大小的最大值。即使您的文件大小小於64,也意味着它將被視爲塊/分割。

考慮塊大小爲64MB,那麼如果假設你要保存10MB文件意味着它將只需要10MB,即塊/溢出你的文件。 如果假設您要保存70MB文件,則意味着您的文件會將其拆分爲64MB和6MB塊/分區。有沒有像塊應該有64MB或128MB。