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

4

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

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

我的问题:

Q1)当将HDFS块写入实际文件系统时,是否会将其写入底层文件系统的多个块?也就是说,对于单个HDFS块,它必须写入128 * 1024 KB / 4 KB --> 32,768个块吗?

Q2)如果以上是正确的,这不会涉及到磁盘头的大量寻道吗?这不是一个耗时的过程吗?Hadoop如何有效地进行此过程?

有人能帮助我理解吗?

1个回答

5
两者之间根本没有联系。HDFS中的128MB块大小只意味着HDFS不会生成大于128MB的文件。当它需要存储更大量的数据时,它将其分成几个文件。但是,HDFS创建的128MB文件与任何其他程序创建的128MB文件没有区别。
您说得对,磁盘上散布着许多4k块可能会导致在访问文件时需要进行大量磁盘寻道。为了避免这种情况,当操作系统为文件分配磁盘空间 - 任何文件,而不仅仅是HDFS创建的文件时 - 它试图选择相邻的块,以便磁盘可以一次寻道,然后一起读取或写入所有块。
有关更多信息,请阅读有关磁盘碎片的内容。

非常感谢您的回复,很有道理。 - CuriousMind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接