HDFS块大小及其与底层物理文件系统块大小的关系

时间:2017-04-01 22:45:07

标签: hadoop hdfs

我试图了解HDFS文件系统块大小与底层物理文件系统块大小之间的关系。

根据我的理解hdfs只是一个虚拟文件系统,它将实际数据存储在底层物理文件系统中。 hadoop 2中的HDFS块大小为128 MB;但是在大多数基于linux的文件系统中,块大小为4 KB。

我的问题:

Q1)当HDFS块写入实际文件系统时,它是否写入底层文件系统的多个块?这是针对单个HDFS块,它必须写入128 * 1024 KB / 4 KB - > 32,768块?

Q2)如果以上是正确的,它是否涉及磁头上的大量搜索?这不是耗时的过程吗? Hadoop如何有效地完成这个过程?

任何人都可以帮我理解这个吗?

1 个答案:

答案 0 :(得分:3)

两者之间根本没有联系。 HDFS中的128MB块大小意味着HDFS不会生成大于128MB的文件。当需要存储大量数据时,它会将其分成几个文件。但HDFS创建的128MB文件与任何其他程序创建的128MB文件没什么区别。

你是正确的,在磁盘上散布了大量的4k块可能会导致在访问文件时有大量的磁盘搜索。为避免这种情况,当操作系统在磁盘上为文件分配空间 - 任何文件,而不仅仅是由HDFS创建的文件 - 它会尝试选择彼此相邻的块,以便磁盘可以寻找一次,然后一起读或写所有的块。

有关详情,请参阅disk fragmentation