【发布时间】:2015-12-16 07:30:11
【问题描述】:
有人可以解释这个计算并给出一个清晰的解释吗?
快速计算表明,如果寻道时间在 10 毫秒左右,传输速率为 100 MB/s,要使寻道时间占传输时间的 1%,我们需要使块大小在 100 MB 左右。默认值实际上是 64 MB,尽管许多 HDFS 安装使用 128 MB 块。随着新一代磁盘驱动器传输速度的提高,该数字将继续向上修正。
【问题讨论】:
有人可以解释这个计算并给出一个清晰的解释吗?
快速计算表明,如果寻道时间在 10 毫秒左右,传输速率为 100 MB/s,要使寻道时间占传输时间的 1%,我们需要使块大小在 100 MB 左右。默认值实际上是 64 MB,尽管许多 HDFS 安装使用 128 MB 块。随着新一代磁盘驱动器传输速度的提高,该数字将继续向上修正。
【问题讨论】:
一个块将作为一条连续的信息存储在磁盘上,这意味着完整读取它的总时间是定位它的时间(寻道时间)+ 读取其内容而不进行任何寻道的时间,即sizeOfTheBlock / transferRate = transferTime。
如果我们保持seekTime / transferTime 的比率很小(接近文本中的 0.01),这意味着我们从磁盘读取数据的速度几乎与磁盘施加的物理限制一样快,而查找信息所花费的时间最少.
这很重要,因为在 map reduce 作业中,我们通常遍历(读取)整个数据集(由 HDFS 文件或文件夹或文件夹集表示)并对其进行逻辑处理,因此我们必须花费全部 @ 987654324@ 无论如何要从磁盘中取出所有数据,让我们尽量减少查找和读取大块所花费的时间,从而减少数据块的大小。
在更传统的磁盘访问软件中,我们通常不会每次都读取整个数据集,因此我们宁愿花更多时间在较小的块上进行大量寻道,而不是浪费时间传输太多我们不会传输的数据需要。
【讨论】:
10ms+100Mb/(100Mb/s)=1.01s。因此,大部分时间都花在了实际读取数据上,而只有一小部分时间花在了查找上。如果将相同的 100M 存储为 10 个块,那将给出10*10ms+100Mb/(100Mb/s)=2s。
由于 100mb 分为 10 个块,因此您必须进行 10 次搜索,每个文件的传输速率为 (10/100)mb/s。 (10ms*10) + (10/100mb/s)*10 = 1.1 秒。无论如何都大于 1.01。
【讨论】:
由于100mb分为10个block,每个block只有10mb,因为它是HDFS。那么应该是10*10ms + 10mb/(100Mb/s) = 0.1s+ 0.1s = 0.2s 甚至更短的时间。
【讨论】: