磁盘块大小和hadoop块大小

时间:2018-09-29 15:28:48

标签: hadoop

我读过很多文章说Hadoop块大小为64 MB会减少元数据,并有助于提高4 kb块大小的性能。但是,为什么在OS磁盘中数据块大小恰好是4kb,在Hadoop中数据块大小恰好是64 MB。

为什么不是100或其他更大的数字?

2 个答案:

答案 0 :(得分:0)

  

但是,为什么数据块大小在OS磁盘中恰好是4kb,在Hadoop中是64 MB。

在HDFS中,与单个OS文件系统相比,我们存储大量数据。因此,为HDFS设置小块大小没有意义。通过具有较小的块大小,将有更多的块,并且NameNode必须存储有关这些块的更多元数据。而且,由于必须提取分散在许多机器上的大量块中的数据,因此数据的提取速度也会很慢。

  

为什么不是100或其他更大的数字?

最初,HDFS块大小为64MB,现在默认为128MB。检查hdfs-site.xml here中的dfs.blocksize属性。这是因为更大,更好的存储容量和速度(HDD和SSD)。稍后将其更改为256MB时,我们不要感到惊讶。

查看this HDFS漫画,以快速了解HDFS。

答案 1 :(得分:0)

除了现有答案外,以下内容也相关:

OS级别上的块和HDFS级别上的块是不同的概念。当您在OS上有一个10kb的文件时,这实际上意味着分配了3个4kb的块,结果是您消耗了12kb。 显然,您不想将很大一部分空间分配给未满的块,因此需要小的块大小。

但是,在HDFS上,块的内容决定了块的大小。 因此,如果您有129MB可以存储在1个128MB的块和1个1MB的块中。 (我不确定它是否会以其他方式传播)。

因此,您不会“丢失”未分配的127 mb。

考虑到这一点,您将需要一个较大的块大小来优化块管理。