hbase热点

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中会更好

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值