HDFS如何管理块大小?

时间:2015-12-23 14:30:03

标签: hadoop hdfs

我的文件大小为65MB,默认hdfs块大小(64MB),那么将为我的文件分配多少64MB块?

是1-64MB块,1-1MB块还是2-64MB块?如果它是2-64MB块则会浪费63MB的剩余部分还是会被分配给其他文件?

3 个答案:

答案 0 :(得分:2)

块大小64MB表示块的上限大小。这并不意味着小于64MB的文件块将消耗64MB。它不会消耗64MB来存储1MB的块。

如果文件 160兆字节enter image description here

希望这有帮助。

答案 1 :(得分:2)

根据this page。看起来它将是一个64 MB块和一个1 MB块。

  

HDFS通常无法意识到一个区块中的最终记录可能只是部分记录,其余内容分流到下一个区块。 HDFS只想确保将文件拆分为与Hadoop实例的预定义块大小匹配的大小均匀的块...并非您需要存储的每个文件都是系统块大小的精确倍数,因此最终的数据块为文件只使用所需的空间。

答案 2 :(得分:0)

答案是2个街区,一个是64MB,另外是1MB。

HDFS就像其他文件系统一样,将文件拆分成块,然后将这些块保存到磁盘中。

但它们之间存在两个主要差异:

  1. HDFS块大小很大,因为每个块在namenode都有一个元数据记录,较小的块大小意味着大量的块和带有元数据的namenode重载。
  2. 因此,HDFS中使用了更大的块大小。

    1. HDFS块大小只是基于linux的文件系统的一个抽象,因此65MB将使用一个64MB块和第二个块的其他1MB空间,其余63MB来自第二个块仍然是免费的,可用于其他数据。
    2. 也就是说,Namenode将记录两个65MB的块,但实际的文件系统空间仅为65MB。