HDFS中block的大小

block的大小与修改

Hadoop2.x/3.x版本中Block的默认大小为128M,早前版本中默认为64M,开发人员可以在hdfs-site.xml中添加如下标标签进行修改。

<!-- hdfs-site.xml --> 
<property>
  <name>dfs.blocksize</name>
  #value值代表block块的大小
  <value>256m</value>
</property>

HDFS默认配置

<!-- 
HDFS默认配置
hdfs-default.xml
-->
<property>
  <name>dfs.blocksize</name>
  <value>134217728</value>
  <description>
      The default block size for new files, in bytes.
      You can use the following suffix (case insensitive):
      k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
      Or provide complete size in bytes (such as 134217728 for 128 MB).
  </description>
</property>

Hadoop2.x、3.x中block为什么默认为128M

block越大对一个block的传输时间会越长,block越小寻找block的时间会越长,通常认为寻址时间是传输时间的1%时为最佳状态。
HDFS中寻址时间一般为10ms,则传输时间最好为10ms/1%=1000ms=1s,而当前普通的机械硬盘的传输速度为100M/s左右,所以为了达到最佳状态,每个地址的数据大小最好为1s*100M/s=100M。
由此每个block大的大小默认设置为128M。

当切换了拥有更高传输速率的硬盘(如固态硬盘)时,可以将Block的大小适当增加以达到最佳状态。

block为什么不能过小或过大

如果block过小,存放的文件会被切分的过于零散,程序会将更多的时间消耗在寻找block中,NameNode也会消耗更多的空间来存储block所在主机的信息。
如果block过大,传输时间的%1会明显大于寻址时间,导致寻址时间与传输时间不平衡,另外InputFormat的默认切片规则会以block的大小确定切片的大小,block越大,切片就会越大,Map过程会变得缓慢。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值