HDFS中block的大小

block的大小与修改

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

 

  dfs.blocksize
  #value值代表block块的大小
  256m

HDFS默认配置



  dfs.blocksize
  134217728
  
      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).
  

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过程会变得缓慢。

你可能感兴趣的:(java,hdfs,hadoop,大数据,开发语言,服务器)