Hbase Region如何预建分区
预建分区的方法很简单,有以下两种
  • hbase shell
  • create 't1', 'f1',SPLITS=>['10','20','30']
  • create 't1','f1',SPLITS_FILE =>'splits.txt'
  • Java API
    • 创建一个byte[][] splitKeys = {{1,2,3},{4,5,6}}
    • admin.createTable(tableDesc,splitKeys)
预建分区的难点在于key如何设计,分多少个和如何分的问题,那么下面我们就对这三个问题一一分析:

1)如何设计Key,我们设计Key的原则就是要让Key足够散列,但同时又要保持Key的长度适中,这里给出一个方法,样本取自Spark读写HBase中的数据

01055HAXMTXG10100001@KEY_VOLTAGE_TEC_PWR@1.60@1.62@1.75@1.55

我想要的rowKey是:01055HAXMTXG10100001KEY_VOLTAGE_TEC_PWR

但是很明显这样肯定是不会足够散列的,那么我们可以对上面那个Key进行MD5,然后取前面三个字符(为了更加散列,可以取1,3,5或者其他组合)再加上原来的Key

DigestUtils.md5Hex(x(0)+x(1)).substring(0,3)+x(0)+x(1)

这样的话我们就可以得到足够散列的数据,并且MD5取得的是十六进制字符串,那么Key的范围就是(0,0,0)至(f,f,f)

2)分多少个:这个需要我们就要根据我们集群规模来进行安排,假设我们有5regionServer,每个regionServer有20个region,那么总共就是100个region,最后的工作就是将000-fff分成100份。

求职交流
简历模板
内推
欢迎底部评论区补充答案^_^
校招交流QQ群:606256041 ,内推交流QQ群:600303907
2020届备战实习校招集结令--we are together
分享本文 微信公众号