HBase SplitSize 到底是多少

大家都知道HBase的一个重要特性就是split,split通常情况下是自动执行的,而trigger条件就是region的size到达一定大小。那么到底这个大小是多少纳?

 

笔者google了一些文章,不少文章说是256M,但也有一些说是1G。那么到底是多少纳?

 

HBase是支持设置Table级别的splitsize的,HTableDescriptor类里读取FileSize的代码如下:

public long getMaxFileSize() {
    byte [] value = getValue(MAX_FILESIZE_KEY);
    if (value != null)
      return Long.valueOf(Bytes.toString(value)).longValue();
    return HConstants.DEFAULT_MAX_FILE_SIZE;
  }

默认的FileSize来自HConstant类:

/** Default maximum file size */
  public static final long DEFAULT_MAX_FILE_SIZE = 1024 * 1024 * 1024;


因此默认的SplitSize是1G。

 

那么再看下check RegionSize的类是怎么检查的:

void configureForRegion(HRegion region) {
    super.configureForRegion(region);
    long maxFileSize = region.getTableDesc().getMaxFileSize();

    // By default we split region if a file > HConstants.DEFAULT_MAX_FILE_SIZE.
    if (maxFileSize == HConstants.DEFAULT_MAX_FILE_SIZE) {
      maxFileSize = getConf().getLong("hbase.hregion.max.filesize",
        HConstants.DEFAULT_MAX_FILE_SIZE);
    }
    this.desiredMaxFileSize = maxFileSize;
  }

1.拿到当前region的表的MaxFileSize

2.如果等于默认值则选择默认值,在此处代码可知配置文件里改region split size的key名是:hbase.hregion.max.filesize。

3.如果不等于默认值则选择已指定的值

 

至于网上很多朋友说是256M,那是因为在0.92.0版本之后的一次改动中将此值从原来的256M改到了1G。因此~很多文档要更新下拉~


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值