HBase RowKey的设计原则
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设计方法
- 预分区的设计,比如预先设计10个region;
- Salt加盐,在 rowkey前面加了一个随机前缀,使其不同于 rowkey之前的开头。前缀类型的分配数量应该与您希望使用数据分布到不同 region的数量一致。在加盐之后, rowkey将基于随机生成的前缀分布在各个 region上,以避免出现热点;
- Hash或者Mod,目的都是散列数据,达到负载均衡,Hash和加盐区别在于前缀不是随机的,通过确定Hash,客户端可以重建完整的RowKey,直接通过get获取想要的行
- Reverse反转,针对固定长度的Rowkey反转后存储,这样可以使Rowkey中经常改变的部分放在最前面,可以有效的随机rowkey。例如手机号就可以使用反转。
更多推荐
已为社区贡献1条内容
所有评论(0)