HBase常见热点问题及几种解决方案

Hbase 热点问题?
在这里插入图片描述

当我们没有提前创建分区的时候,只有一个region,默认rowkey是递增的

往大的region写数据,无法发挥集群写的优点,那之前的region有的未达到饱和状态,

就浪费了。数据分布不均。

例如:

Keys:[2-4]一直往rs1写数据,没有向其他的rs写,就会出现热点问题

就出现了热点的问题
在这里插入图片描述

什么是热点

在这里插入图片描述

产生原因
1、没有提前创建分区,Hbase 创建表默认只有一个分区

在这里插入图片描述

2、Rowkey设计不合理

在这里插入图片描述

只有一个regionserver,然后所有的rowkey都往该region里面写数据。最后regionserver就会承受不了压力。

就会出现单点故障,热点问题。

解决方案
hbase 创建表时指定分区
Hbase预分区
Shell createTable并预分区
在这里插入图片描述

JavaAPI createTable并预分区–直接根据描述创建表
在这里插入图片描述

JavaAPI createTable并预分区–根据描述和region个数以及startkey,endkey自动分配
在这里插入图片描述

JavaAPI createTable并预分区–根据表的描述和自定义的分区设置创建表(同步)

在这里插入图片描述

JavaAPI createTable并预分区–根据表的描述和自定义的分区设置创建表(异步)

在这里插入图片描述

合理设计rowkey
Rowkey 长度原则

在这里插入图片描述

Rowkey 散列原则
注意:rowkey低位和高位
在这里插入图片描述

Rowkey唯一原则

在这里插入图片描述

Rowkey 按照字典排序,可以提高查询的效率。

同一个用户:将最近可能访问的数据放到一块,可以提高数据查询的效率

不同的用户:将数据放在不同的regionserver上,以至负载均衡。

Hbase常见避免热点问题的方法(*****)
加盐
一把rowkey前缀,决定了在哪一个分区。

在这里插入图片描述

在这里插入图片描述

降低热点问题,但是会造成读的时候,效率下降。

在这里插入图片描述
在这里插入图片描述

哈希
在这里插入图片描述

反转
在这里插入图片描述

举例:

在这里插入图片描述

前缀都是一样,可能都会往一个region里面写数据时,就会出现热点问题。

返回来,把号码倒过来,就会是不同的数字,解决了热点问题。

时间戳反转

在这里插入图片描述

HBASE总结
1、尽量减少行和列的大小

在这里插入图片描述

2、列簇尽可能越短越好,最好是一个字符

3、冗长的属性名虽然可读性好,但是更短的属性存储在HBase中会更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值