欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-27 15:40:07
...

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

时间戳反转