HBase RowKey的设计原则

1.什么是HBase

1.HBase是面向列式存储的分布式的NoSql数据库;
2.HBase底层是基于HDFS实现的,集群是通过Zookeeper管理的;
3.海量存储,快速访问。

2.什么是RowKey

RowKey与关系型数据库中的主键相似,HBase 使用 RowKey 来唯一标识某行的数据。

3.RowKey的设计原则

  • 业务
    需要满足实时查询需求
  • 散列
    避免热点数据,使数据集中在一个Region上,查询速率低
  • 唯一
    必须保证RowKey的唯一性,由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖
  • 长度
    RowKey的长度不宜过长,不宜超过16个字节,目前操作系统都是64位系统,内存8字节对齐,控制在16字节,8字节的整数倍利用了操作系统的最佳特性,hbase将部分数据加载到内存当中,如果rowkey过长,内存的有效利用率就会下降
3.1 散列原则的RowKey设计方法
  1. 预分区的设计,比如预先设计10个region;
  2. Salt加盐,在 rowkey前面加了一个随机前缀,使其不同于 rowkey之前的开头。前缀类型的分配数量应该与您希望使用数据分布到不同 region的数量一致。在加盐之后, rowkey将基于随机生成的前缀分布在各个 region上,以避免出现热点;
  3. Hash或者Mod,目的都是散列数据,达到负载均衡,Hash和加盐区别在于前缀不是随机的,通过确定Hash,客户端可以重建完整的RowKey,直接通过get获取想要的行
  4. Reverse反转,针对固定长度的Rowkey反转后存储,这样可以使Rowkey中经常改变的部分放在最前面,可以有效的随机rowkey。例如手机号就可以使用反转。
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值