我试图了解 HDFS 文件系统块大小和底层物理文件系统块大小之间的关系。
根据我的理解,hdfs这只是一个虚拟文件系统,它将实际数据存储在底层物理文件系统上。hadoop 2中的HDFS块大小为128 MB;然而,在大多数基于 Linux 的文件系统中,块大小为 4 KB。
Q1)当一个 HDFS 块写入实际文件系统时,它会写入底层文件系统的多个块吗?也就是说对于单个 HDFS 块,它必须写入 128 * 1024 KB / 4 KB --> 32,768 个块?
Q2)如果上述正确,那么是否涉及到大量的磁头寻道?这个过程不是很耗时吗?Hadoop 如何高效地完成这个过程?
谁能帮助我理解这一点?
两者之间根本没有任何联系。HDFS 中的 128MB 块大小仅意味着 HDFS 不会生成大于 128MB 的文件。当需要存储大量数据时,它会将其分成多个文件。但是 HDFS 创建的 128MB 文件与任何其他程序创建的 128MB 文件没有什么不同。
\n\n您是对的,在磁盘上散布大量 4k 块可能会导致访问文件时进行大量磁盘寻道。为了避免这种情况,当操作系统在磁盘上为文件 \xe2\x80\x93 分配空间时,任何文件(而不仅仅是 HDFS \xe2\x80\x93 创建的文件)都会尝试选择彼此相邻的块,以便磁盘可以寻道一次,然后一起读取或写入所有块。
\n\n有关更多信息,请阅读有关磁盘碎片的信息。
\n| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |