HBase RowKey的设计

HBase RowKey的设计

Rowkey的设计

rowkey设计目的

1.RowKey:rowkey是一条数据的唯一标识,这条数据存储于哪个分区,取决于rowkey处于哪个预分区的区间。

2.设计rowkey的目的:让数据均匀地分布于所有的region中,在一定程度上防止数据的倾斜。

rowkey设计原则

1.rowkey长度原则:rowkey是一个二进制码流,长度被很多开发者建议设计在10-100字节,不过建议是越短越好,不要超过16个字节。
原因:
2.rowkey散列原则
如果rowkey是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位作为散列字段,由程序循环生成,低位放时间字段,这样将提高数据均衡分布在每个RegionServer实现负载均衡的几率
如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个RegionServer上堆积的热点现象,这样在做数据检索的时候负载将会集中在个别RegionServer,降低查询的效率。
3.rowkey唯一原则:必须在设计rowkey上保证其唯一性。

如何避免热点问题

1.加盐
加盐是指将随机数据添加到rowkey设计值的开头
2.哈希
k恶意使用单向散列,而不是随机分配。这样可以使给定的行时钟以相同的前缀”被盐化“,使用确定的哈希可以让客户重构完整的rowkey,可以使用Get操作
3.反转
反转固定长度或者数字格式的rowkey,以使最经常变化的部分放在前面,例如:手机号和时间戳作为rowkey设计时的反转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值