【问题标题】:Why Is a Block in HDFS So Large?为什么 HDFS 中的块这么大?
【发布时间】:2015-12-16 07:30:11
【问题描述】:

有人可以解释这个计算并给出一个清晰的解释吗?

快速计算表明,如果寻道时间在 10 毫秒左右,传输速率为 100 MB/s,要使寻道时间占传输时间的 1%,我们需要使块大小在 100 MB 左右。默认值实际上是 64 MB,尽管许多 HDFS 安装使用 128 MB 块。随着新一代磁盘驱动器传输速度的提高,该数字将继续向上修正。

【问题讨论】:

    标签: hadoop mapreduce hdfs


    【解决方案1】:

    一个块将作为一条连续的信息存储在磁盘上,这意味着完整读取它的总时间是定位它的时间(寻道时间)+ 读取其内容而不进行任何寻道的时间,即sizeOfTheBlock / transferRate = transferTime

    如果我们保持seekTime / transferTime 的比率很小(接近文本中的 0.01),这意味着我们从磁盘读取数据的速度几乎与磁盘施加的物理限制一样快,而查找信息所花费的时间最少.

    这很重要,因为在 map reduce 作业中,我们通常遍历(读取)整个数据集(由 HDFS 文件或文件夹或文件夹集表示)并对其进行逻辑处理,因此我们必须花费全部 @ 987654324@ 无论如何要从磁盘中取出所有数据,让我们尽量减少查找和读取大块所花费的时间,从而减少数据块的大小。

    在更传统的磁盘访问软件中,我们通常不会每次都读取整个数据集,因此我们宁愿花更多时间在较小的块上进行大量寻道,而不是浪费时间传输太多我们不会传输的数据需要。

    【讨论】:

    • 这是一个很好的回复。感谢您的快速回答。但是一个小问题:由于寻道时间是 10ms,这意味着读取一个 100MB 的数据块需要 10ms。在 1sec 内,它将能够寻找 100 个数据块(100*100MB)。它已寻找 100000MB 的数据,但在此期间仅传输了 100MB 的数据,而剩余的 9900MB 必须传输。所以 我 的 意思 是 , 即使 我们 尽可能 快 地 寻求 , 我们 也 必须 坐等 .你能澄清一下吗?
    • 寻道时间是我们在读取任何数据之前需要花费的时间,粗略地说这是将读取头移动到数据物理位于磁盘上的位置所需的时间(+其他类似类型的开销):见这里:en.wikipedia.org/wiki/… 为了读取连续存储的 100Mb,我们花费了10ms+100Mb/(100Mb/s)=1.01s。因此,大部分时间都花在了实际读取数据上,而只有一小部分时间花在了查找上。如果将相同的 100M 存储为 10 个块,那将给出10*10ms+100Mb/(100Mb/s)=2s
    • 知道了。非常感谢您的快速周转。
    • 与我见过的其他链接相比,这是一个很好的解释
    • 我只是出于好奇来到这里,我读到了对这个问题最清晰的解释之一。恭喜
    【解决方案2】:

    由于 100mb 分为 10 个块,因此您必须进行 10 次搜索,每个文件的传输速率为 (10/100)mb/s。 (10ms*10) + (10/100mb/s)*10 = 1.1 秒。无论如何都大于 1.01。

    【讨论】:

      【解决方案3】:

      由于100mb分为10个block,每个block只有10mb,因为它是HDFS。那么应该是10*10ms + 10mb/(100Mb/s) = 0.1s+ 0.1s = 0.2s 甚至更短的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-28
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        相关资源
        最近更新 更多