假设块大小为128MB,则群集具有10GB(因此~80个可用块)。假设我创建了10个小文件,它们共同占用磁盘上的128MB(块文件,校验和,复制......)和10个HDFS块。如果我想将另一个小文件添加到HDFS,那么HDFS使用什么,使用的块或实际的磁盘使用量来计算可用块?
80个块 - 10个块= 70个可用块或(10 GB - 128 MB)/ 128 MB = 79个可用块?
感谢。
答案 0 :(得分:5)
块大小仅表示HDFS如何在群集中拆分和分发文件 - HDFS中没有物理上保留的块数(如果您愿意,可以更改每个文件的块大小)< / p>
对于您的示例,您还需要考虑复制因子和校验和文件,但实质上添加大量小文件(小于块大小)并不意味着您浪费了“可用块” - 它们占用了尽可能多的空间(再次需要记住复制将增加存储文件所需的物理数据占用空间),“可用块”的数量将更接近您的第二次计算。
最后一点 - 有很多小文件意味着您的名称节点将需要更多内存来跟踪它们(块大小,位置等),并且处理128x1MB文件的效率通常低于单个128MB文件(尽管这取决于你是如何处理它的)