为什么HDFS中的块太大了?

时间:2014-03-12 13:31:36

标签: hadoop mapreduce hdfs

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

  

快速计算表明,如果寻道时间约为10 ms且传输速率为100 MB / s,为了使寻道时间为传输时间的1%,我们需要将块大小设置为100 MB左右。默认值实际为64 MB,但许多HDFS安装使用128 MB块。随着新一代磁盘驱动器的传输速度的增长,这个数字将继续向上修正。

3 个答案:

答案 0 :(得分:26)

一个块将被存储为磁盘上的一条连续信息,这意味着完全读取它的总时间是找到它的时间(寻找时间)+读取其内容的时间而不再进行任何搜索,即sizeOfTheBlock / transferRate = transferTime

如果我们保持比率seekTime / transferTime很小(文本中接近.01),这意味着我们从磁盘读取的数据几乎与磁盘施加的物理限制一样快,花费的时间最少供参考。

这很重要,因为在map reduce作业中,我们通常遍历(读取)整个数据集(由HDFS文件或文件夹或文件夹集表示)并在其上执行逻辑,因为我们必须花费全部{ {1}}无论如何要从磁盘中获取所有数据,让我们尽量减少大块搜索和读取所花费的时间,因此数据块的大小。

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

答案 1 :(得分:2)

由于100mb被分成10个块,你需要进行10次搜索,每个文件的传输速率为(10/100)mb / s。 (10ms * 10)+(10 / 100mb / s)* 10 = 1.1秒。无论如何,这大于1.01。

答案 2 :(得分:-2)

由于 100mb 分为10个区块,因此每个区块仅 10mb ,因为它是 HDFS 。然后它应该是10*10ms + 10mb/(100Mb/s) = 0.1s+ 0.1s = 0.2s,甚至更短的时间。