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

HBase常见热点问题及几种解决方案相关推荐

  1. 热点账户问题和常用解决方案【上】

    热点账户问题由来已久,一直是账户系统设计中的一个难点和瓶颈! 小拽将通过上中下三篇文章,分别介绍下热点账户的产生,解决方案和延伸应用! 本篇主要介绍下什么是热点账户?通用财务账户系统如何设计?以及其中 ...

  2. Hbase 热点问题3种解决方案

    Hbase 热点问题3种解决方案 对hbase进行观察总是有个别的regionserver的request个数远大于其他的region server的请求数量,考虑到数据应该由倾斜,查找了一些方案,无 ...

  3. redis热点key解决方案_缓存穿透,缓存雪崩,4种解决方案分析

    前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到 ...

  4. HBase上关于CMS、GC碎片、大缓存的一种解决方案:Bucket Cache

    介绍BucketCache前,先对HBase的Cache做个介绍:  一.HBase在读取时,会以Block为单位进行cache,用来提升读的性能: 二.Block可以分类为DataBlock(默认大 ...

  5. 分布式事务中常见的三种解决方案

    分布式事务中常见的三种解决方案 目录 一.分布式事务前奏 二.柔性事务解决方案架构 (一).基于可靠消息的最终一致性方案概述 (二).TCC事务补偿型方案 (三).最大努力通知型 三.基于可靠消息的最 ...

  6. HBase的数据热点和Hbase常见避免热点问题的方法

    只要使用过,听说过HBase的人,我想对HBase的数据热点想必也不会陌生. 数据热点是如何出现的,这得从HBase的存储结构说起,对于HBase详细的存储结构可以上网搜一下,这里就不补充了. 我们只 ...

  7. 面试必备:缓存穿透,缓存雪崩的四种解决方案

    前言 设计一个缓存系统,不得不考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数 ...

  8. beyond compare4过期解决方法_面试必备:缓存穿透、雪崩解决方案及缓存击穿的四种解决方案...

    前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到 ...

  9. Redis热点问题发现及通用解决方案

    https://www.toutiao.com/a6665428270546158083/?tt_from=mobile_qq&utm_campaign=client_share&ti ...

最新文章

  1. 批量替换_批量替换图框
  2. 总结 | 一些关于 CPU 的基本知识
  3. FPGA开发综合技巧
  4. 【Storm】一张图搞定Storm的运行架构
  5. vue中的data用return返回
  6. 第二天 Linux常见命令
  7. app个人健康管理系统开源_开源会促进心理健康吗?
  8. 【c语言】 gets()函数不执行/被跳过
  9. java Swing实现考试系统
  10. 第一章 广告系统架构
  11. python如何执行部分代码_python如何运行代码
  12. 将网页上的MathJax复制到word中
  13. NTDETECT.COM 丢失(NTDETECT failed)解决方法
  14. PyCharm 下载/上传gitlab 代码
  15. 2016年计算机二级步骤,2016计算机二级MS-Office真题15操作步骤
  16. 怎么查看自己的笔记本电脑系统型号以及其他配置(DXDIAG打开DirectX诊断配置)
  17. vsftpd mysql_虚拟主机与vsftpd和MySQL在Debian Etch
  18. K8S污点taint的声明语法、污点的设置、查看和去除
  19. Android性能优化实践
  20. flex与相对定位在国内双核浏览器极速模式下的兼容性问题

热门文章

  1. java硬币兑换_java程序题:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法...
  2. 简单使用github上的节操播放器
  3. dnf修改服务器制裁24,DNF关于对非法第三方软件封号制裁的重申
  4. 有哪些好的IT编程技术网站?有哪些好的论文网站?
  5. mysql数据库审计agent_数据库审计-数据库审计系统功能-安华金和
  6. matlab显示全球海岸线
  7. javascript高级程序设计读书笔记----引用类型
  8. You-Get, Annie 视频下载器 一键安装脚本
  9. 只需10分钟,给你全世界!水经注全球三维离线GIS系统
  10. 博士学位真的那么重要吗?上交大博士亲述科研心路,获4万高赞~