【问题标题】:How are HDFS files getting stored on underlying OS filesystem?HDFS 文件如何存储在底层 OS 文件系统上?
【发布时间】:2014-11-12 14:38:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

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

    【讨论】:

    • 但是 64Mb 块相对于硬盘的具体含义是什么?还是类似于 64Mb HDFS 块意味着 HDFS 文件的前 64Mb 块保存在硬盘上的连续范围内?还是在将 HDFS 文件的 64Mb 片段保存在 Datanode 上之前,它不会转移到另一个 Datanode?在 HDFS 文件系统中究竟是如何计算 64Mb 块的?
    • 我将在 Hadoop:Definitive guide 中为您提供解释。文件系统块是磁盘块大小的整数倍,通常为 512 字节。文件系统通常具有几个 Kib 的块。在 HDFS 中,这单位默认为 64Mb。就像在单个磁盘的文件系统中一样,HDFS 中的文件被分成块大小的块,这些块作为独立的单元存储。与单个磁盘的文件系统不同,HDFS 中小于单个块的文件不会占用整个块的底层存储空间。
    • 没错,一个文件将被分成默认大小的块。但是如果文件过小,它不会占据整个64Mb。我们在datanode中可见的是一个*.blk文件64Mb 或更少。如果您询问大块大小,是为了减少查找时间,否则如果我们使用较小的块,查找时间会更长。
    • 这里需要注意的是,HDFS 不是一个实际的文件系统,但它使用 API 访问底层文件系统。雅虎使用 ext3 作为 hadoop 部署的基础文件系统。
    • 这里的目的是为了克服传统文件系统4-8 Kb的块大小的限制。但是,最终都必须存储在磁盘上,这将基于磁盘块大小,就像你说的。在设置一个大的文件系统块大小时,假设依赖于 HDFS 的应用程序将执行长的顺序流式读取。我认为这会消除你的困惑 - stackoverflow.com/questions/19473772/…
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多