Hadoop中HDFS上的文件是分块存储的,在hadoop1.x的版本,分块大小(block_size)默认是64M,Hadoop2.x的版本中,分块大小默认是128M。
为什么要这么设计?

1)首先NameNode会根据元数据信息进行寻址。假如寻址时间是10ms。
2)寻址时间是数据传输时间的0.01倍时,是最佳状态。所以最佳数据传输时间=10ms / 0.01 = 1000ms = 1s。
3)目前大多磁盘的传输效率为100M/s(和磁盘性能有关)。
4)又因为计算机底层都是二进制存储,取一个2的n次方距离100最近的数,最终取2的7次方,也就是128。
如何自定义block_size?
在hdfs-site.xml配置文件中,加入配置项:
<property>
<name>dfs.blocksize</name>
<value>256m</value>
</property>
本文探讨了Hadoop HDFS中文件分块设计的科学性,解释了为何默认块大小在不同版本有所变化,以及如何在hdfs-site.xml中自定义block_size。通过寻址时间和磁盘传输效率的分析,揭示了块大小选择背后的计算原理。
1985

被折叠的 条评论
为什么被折叠?



