RowKey Hbase当中 table的行键,相当于主键,一级索引
在使用Hbase过程当中,对于开发者来说,rowkey的设计是最重要的.
而再rowkey的设计要结合预分区一起使用
往Hbase写入一条数据,需要指定 'namespace:table','rowkey','columfamliy列族' 'cloum'列名 'value'
RowKey设计不好,会产生服务器热点问题
列如一个rengion的rowkey范围是k1-k2,服务器疯狂对这个region进行读写,会造成,该region所在的regionserver,热点问题,其他rs访问很少
设计应用
创建HBase表时,指定一张表拥有多个Region分区,不要使用默认分区:1个分区。
-
划分的目标:划分多个分区,实现分布式并行读写,将无穷区间划分为几段,将数据存储在不同分区中,实现分区的负载均衡
-
划分的规则:**==Rowkey或者Rowkey的前缀
rowkey设计原则
-
唯一原则:一个rowkey对应一条数据
-
业务原则: 选择常用的的查询条件作为前缀
-
组合原则:将更多的经常查询的条件作为前缀
-
散列原则:为了避免热点问题,rowkey生成的越散列越好
-
长度原则: 再不影响业务的情况下,rowkey越端越好
RowKey 设计原则
image.png- 唯一性
- 业务性
- 热点性
- 长度原则
长度最好不要超过100个字节
网友评论