HDFS 文件如何存储在底层操作系统文件系统上?

Sha*_*oor 7 hadoop hdfs

HDFS 是 Hadoop 中的逻辑文件系统,块大小为 64MB。HDFS 上的文件保存在底层操作系统文件系统上,例如块大小为 4KiB 的 ext4。

据我所知,对于本地文件系统上的文件,操作系统使用4KiB块的物理硬盘的起始柱面和结束柱面来检索。HDFS 文件也保存在 ext4 底层文件系统上。HDFS 文件也只能在 4KiB 块的起始和结束柱面的帮助下进行检索。

如果是这样的话,这不会提高数据检索的速度。现在的问题是,HDFS wrt硬盘使用什么技术来提高其检索速度?

Abh*_*hek 2

ext 文件系统的检索速度不会改变,因为您的想法非常正确。但实际情况是,一个大文件被分割成 64Mb 大小的文件,这些文件存储在不同的计算机上。因此,当进行检索调用时,多台机器同时读取文件片段并向主机(名称节点)报告。这样,事情就会加快。这相当于十个人在 1 天完成一项建筑任务而不是一个人在 10 天完成。

  • 但对于硬盘而言,64Mb 块到底意味着什么?或者类似 64Mb HDFS 块意味着 HDFS 文件的第一个 64Mb 块保存在硬盘上的连续范围上?或者,直到 HDFS 文件的 64Mb 片段保存在 Datanode 上之前,它不会转移到另一个 datanode 上?HDFS 文件系统中的 64Mb 块到底是如何计算的? (2认同)
  • 这里的目的是克服传统文件系统的块大小为 4-8 Kb 的限制。但是,最终所有内容都必须存储在磁盘上,这将基于磁盘块大小,就像您所说的。在设置大文件系统块大小时,假设依赖 HDFS 的应用程序将执行长顺序流读取。我认为这会消除您的困惑 - http://stackoverflow.com/questions/19473772/data-block- hdfs 中的大小-why-64mb (2认同)