为什么HDFS中的块太大了?

Kum*_*mar 16 hadoop mapreduce hdfs

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

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

Sve*_*end 26

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

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

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

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

  • 寻道时间是我们在读取任何数据之前需要花费的时间,实际上这是将读取头移动到数据在物理上位于磁盘上所需的时间(+其他类似的开销):请参见:http: //en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#Seek_time为了读取连续存储的100Mb,我们花费了"10ms + 100Mb /(100Mb/s)= 1.01s".因此,很大一部分时间用于实际读取数据,而只花费一小部分用于寻找.如果那些相同的100M被存储为10个集团,那么将给出"10*10ms + 100Mb /(100Mb/s)= 2s". (11认同)