2013-03-28 13 views
2

假設塊大小爲128MB,羣集有10GB(如此~80個可用塊)。假設我已經創建了10個小文件,它們一起在磁盤上佔用128MB(塊文件,校驗和,複製...)和10個HDFS塊。如果我想向HDFS添加另一個小文件,那麼HDFS使用什麼,使用的塊或實際的磁盤使用率來計算可用塊?HDFS如何計算可用塊?

80個塊 - 10個塊= 70個可用塊或(10 GB - 128 MB)/ 128 MB = 79個可用塊?

謝謝。

回答

4

塊大小隻是HDFS如何在集羣中分割和分發文件的指示 - HDFS中沒有物理保留的塊數(如果需要,可以更改每個單獨文件的塊大小)

對於您的示例,您還需要考慮複製因子和校驗和文件,但實質上添加大量小文件(小於塊大小)並不意味着浪費了「可用塊」 - 它們需要(儘管您需要記住複製將增加存儲文件所需的物理數據佔用空間),並且「可用塊」的數量將更接近您的第二次計算。

最後一點 - 有很多小文件意味着你的名字節點將需要更多的內存來跟蹤它們(塊大小,位置等),而且處理128x1MB文件的效率通常低於單個128MB文件(儘管這取決於關於你如何處理它)

+0

是的。謝謝克里斯!所以塊大小是(邏輯)分配單位,對嗎?假設剩餘磁盤空間爲250MB(<2塊),我們無法添加200MB文件(複製= 1時需要2個塊)。 – 2013-03-28 12:14:01

+0

剩餘250 MB,您可以添加一個128 MB大小的200 MB文件 - 您只需獲得一個128MB的塊,另一個72MB的塊(複製因子1) – 2013-03-28 23:15:40