我的文件大小是65mb和默认的hdfs块大小(64mb),那么有多少64mb块将分配给我的文件?它像1-64mb块、1-1mb块还是2-64mb块?若它是2-64mb块,它将被浪费剩余的63mb,还是会被分配到其他文件?
mo49yndu1#
答案是2块,一块64mb,另一块1mb。hdfs就像其他文件系统一样,将文件分割成块,然后将这些块保存到磁盘。但它们之间有两个主要区别:hdfs块的大小是巨大的,因为每个块在namenode都有一个元数据记录,较小的块大小意味着大量的块和namenode的元数据过载。因此,在hdfs中使用更大的块大小。hdfs块大小只是基于linux的文件系统上的一个抽象,因此65mb将使用一个64mb块和第二个块的其他1mb空间,第二个块的其余63mb空间仍然是空闲的,可用于其他数据。也就是说,namenode将有两个记录为65mb的块,但实际的文件系统空间仅为65mb。
js4nwp542#
块大小64mb表示块的上限大小。这并不意味着小于64mb的文件块将消耗64mb。它不会消耗64mb来存储1mb的块。如果文件是160兆字节,希望这有帮助。
gfttwv5a3#
根据这一页。看起来是一个64MB的块和一个1MB的块。hdfs通常不知道一个块中的最终记录可能只是一个部分记录,而它的其余内容被分流到下一个块。hdfs只想确保文件被分割成大小均匀的块,这些块与hadoop示例的预定义块大小相匹配。。。并非每个需要存储的文件都是系统块大小的精确倍数,因此文件的最终数据块只使用所需的空间。
3条答案
按热度按时间mo49yndu1#
答案是2块,一块64mb,另一块1mb。
hdfs就像其他文件系统一样,将文件分割成块,然后将这些块保存到磁盘。
但它们之间有两个主要区别:
hdfs块的大小是巨大的,因为每个块在namenode都有一个元数据记录,较小的块大小意味着大量的块和namenode的元数据过载。
因此,在hdfs中使用更大的块大小。
hdfs块大小只是基于linux的文件系统上的一个抽象,因此65mb将使用一个64mb块和第二个块的其他1mb空间,第二个块的其余63mb空间仍然是空闲的,可用于其他数据。
也就是说,namenode将有两个记录为65mb的块,但实际的文件系统空间仅为65mb。
js4nwp542#
块大小64mb表示块的上限大小。这并不意味着小于64mb的文件块将消耗64mb。它不会消耗64mb来存储1mb的块。
如果文件是160兆字节,
希望这有帮助。
gfttwv5a3#
根据这一页。看起来是一个64MB的块和一个1MB的块。
hdfs通常不知道一个块中的最终记录可能只是一个部分记录,而它的其余内容被分流到下一个块。hdfs只想确保文件被分割成大小均匀的块,这些块与hadoop示例的预定义块大小相匹配。。。并非每个需要存储的文件都是系统块大小的精确倍数,因此文件的最终数据块只使用所需的空间。