HBase的rowkey设计原则、HBase避免热点 11

1. 唯一性原则

每条数据的rowkey必须唯一,不重复

2. 长度原则

rowkey尽量越短越好,一般不要超过16字节

原因

  • 数据的持久化文件HFlie中是按照KeyValue存储的,如果rowkey过长,比如超过100字节,1000w行数据,光rowkey就要占用100*1000w=10亿个字节,将近1G数据,这样会极大影响HFlie的存储效率
  • MemStore将缓存部分数据到内存,如果rowkey字段过长,内存的有效利用率就会降低,系统不能缓存更多的数据,这样会降低检索效率

3. 散列原则

就是为了保证数据写入时,能够均衡流入到不同的region,避免大量的数据同时流入到相同的region中,最后造成HRegionServer负载比较高。如果没有保证散列原则,后期可能会出现热点问题。

如何保证散列,避免热点问题?

  • 加盐
    它就是在rowkey的前面加上随机数
    rowkey=随机数+xxxx
  • 取哈希值
    它就是通过一个hash算法,将原本的rowkey取哈希值,也是为了获取得到一个类似于随机数的哈希值
  • 反转
    把数据中一些经常改变或者是最没有实际意义的信息,放到rowkey的最高位`
    手机号反转
136****9301---------->1039****631
136****6234---------->4326****631
136****7223---------->3227****631
136****5432---------->2345****631

时间戳反转

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值