跳到主要内容

简述HDFS的block为什么是128M?增大或减小有什么影响 ?

参考答案:

HDFS(Hadoop Distributed FileSystem)的block设置为128M的原因主要与寻址时间和磁盘传输速度的平衡有关。在HDFS中,文件被分解成多个block大小的数据块,并独立保存在各个单元中。这种设计有助于提高数据的并行处理能力,因为多个block可以同时被不同的节点处理。

对于为什么选择128M作为默认的block大小,这主要是基于HDFS的平均寻址时间和磁盘传输速率的考虑。当寻址时间约为10ms,而传输速率为100MB/s时,为了使寻址时间仅占传输时间的1%,最佳的block大小应设置为128MB。这个大小既能够减少寻址时间,又能够使得传输一个由多个block组成的文件的时间主要取决于磁盘的传输速率。

如果增大block的大小,可能会导致以下影响:

  1. 磁盘传输数据的时间会明显大于定位这个block开始位置所需的时间,这会导致程序在处理这块数据时变得非常慢。
  2. MapReduce中的map任务通常一次只处理一个block中的数据,如果block过大,那么map任务的执行速度也会受到影响,导致整体处理速度变慢。

如果减小block的大小,则可能会有以下影响:

  1. 存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,这可能会导致内存不足的问题。
  2. 如果block过小,那么寻址时间会增长,因为程序需要频繁地寻找每个block的开始位置,这会降低数据处理的效率。

总的来说,block大小的设置需要在寻址时间和磁盘传输速度之间进行权衡,以找到最优的设置。而默认的128M大小,在很多情况下都是一个比较合理的选择。然而,在实际应用中,根据具体的硬件环境、工作负载和数据特性,可能需要对block大小进行适当调整以达到更好的性能。