HBase行键设计

HBase的行键按照字典顺序排序,这样的设计优化了扫描。
但是这样的设计可能会导致hotspotting问题,大量的客户端(读写)请求可能集中在一个或者几个region server上,造成一个或者几个机器的压力过大,在同一个region server上的其他region会收到影响,影响集群效率。

为了防止出现hotspotting,在设计行键的时候,应该使得数据尽量同时往多个region上写而不是一个。
常用方法:
1,salting
指的是将随机数放在rowkey的起始处,即给每一个rowkey随机指定了前缀来使其分布在不同的region上,例如随机对rowkey加上‘a-’,'b-'的前缀。
由于前缀的分配是随机的,因此如果想要按照字典顺序找到这些行,需要对rowkey做额外的工作。
salting能保证写操作分布在不同的region,增大了写操作的吞吐量,但是降低了读操作的效率。

2,hashing
用单向hash散列来确定rowkey。如MD5等。
在分散了regionserver负载的同时,也允许在读操作时能够正确预测。确定性hash能让客户端重建完整的rowkey,进而得到完整的行数据。

3,反转
可以反转一个固定长度的键,来让最长改变的部分(最低显著位)在第一位,这样有效打乱了行键,但是牺牲了行排列的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值