1、热点现象

检索habse的记录首先要通过row key来定位数据行,当大量的Cient访问Hbase集群的一个或少数几个节点,会造成少数RegionServer的读/写请求过多、负载过大,而其他RegionServer负载却很小,就造成了“热点”现象.

大量访问会使热点region所在的单个主机负载过大,引起性能下降甚至region不可用。

2、产生原因

有大量连续编号的row key ==> 大量row key相近的记录集中在个别region
==> client检索记录时,对个别region访问过多 ==> 此region所在的主机过载

==> 热点

3、常见的避免热点的方法

(1)加盐

  • 这里所说的加盐不是密码学中的加盐,而是在rowkey的前面增加随机数,具体就是给rowkey分配一个随机前缀以使得它和之前的rowkey的开头不同。给多少个前缀? 这个数量应该和我们想要分散数据到不同的region的数量一致(类似hive里面的分桶)。
  • 自己理解: 即region数量是一个范围,我们给rowkey分配一个随机数,前缀(随机数)的范围是region的数量)
  • 加盐之后的rowkey就会根据随机生成的前缀分散到各个region上,以避免热点。

(2)哈希

哈希会使同一行永远用一个前缀加盐。哈希也可以使负载分散到整个集群,但是读却是可以预测的。使用确定的哈希可以让客户端重构完整的rowkey,可以使用get操作准确获取某一个行数据。

(3)反转

  • 第三种防止热点的方法是反转固定长度或者数字格式的rowkey。这样可以使得rowkey中经常改变的部分(最没有意义的部分)放在
    前面。这样可以有效的随机rowkey,但是牺牲了rowkey的有序性。

  • 反转rowkey的例子:以手机号为rowkey,可以将手机号反转后的字符串作为rowkey,从而避免诸如139、158之类的固定号码开头导 致的热点问题。

(4)时间戳反转

一个常见的数据处理问题是快速获取数据的最近版本,使用反转的时间戳作为rowkey的一部分对这个问题十分有用,可以用Long.Max_Value - timestamp追加到key的末尾,例如[key][reverse_timestamp] ,[key] 的最新值可以通过scan [key]获得[key]的第一条记录,因为HBase中rowkey是有序的,第一条记录是最后录入的数据。

(5)尽量减少行和列的大小

   在HBase中,value永远和它的key一起传输的。当具体的值在系统间传输时,它的rowkey,列名,时间戳也会一起传输。如果你的rowkey和列名很大,HBase storefiles中的索引(有助于随机访问)会占据HBase分配的大量内存,因为具体的值和它的key很大。可以增加block大小使得storefiles索引再更大的时间间隔增加,或者修改表的模式以减小rowkey和列名的大小。压缩也有助于更大的索引。

(6)其他办法

列族名的长度尽可能小,最好是只有一个字符。冗长的属性名虽然可读性好,但是更短的属性名存储在HBase中会更好。也
可以在建表时预估数据规模,预留region数量,例如create 'myspace:mytable’, SPLITS => [01,02,03,,...99]

4、row key的设计原则

(1)rowkey唯一原则

  • 必须在设计上保证其唯一性,rowkey是按照二进制字节数组排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。所以设计row key时尽量把体现业务特征的信息、业务上有唯一性的信息编进row key。

(2)rowkey长度原则

  • rowkey是一个二进制码流,可以是任意字符串,最大长度 64kb ,实际应用中一般为10-100byte,以byte[] 形式保存,一般设计成定长。建议越短越好,不要超过16个字节.
  • 2个原因——

原因1:
数据的持久化文件HFile中是按照(Key,Value)存储的,如果rowkey过长,例如超过100byte,那么1000万行的记录计算,仅row key就需占用100*1000万=10亿byte,近1Gb。这样会极大影响HFile的存储效率!

原因2:
MemStore将缓存部分数据到内存,若 rowkey字段过长,内存的有效利用率就会降低,就不能缓存更多的数据,从而降低检索效率。目前操作系统都是64位系统,内存8字节对齐,控制在16个字节,8字节的整数倍利用了操作系统的最佳特性。

(3)rowkey散列原则

如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段,这样将提高数据均衡分布在每个RegionServer,以实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息,所有的数据都会集中在一个RegionServer上,这样在数据检索的时候负载会集中在个别的RegionServer上,造成热点问题,会降低查询效率。

Hbase热点问题以及避免热点问题的办法相关推荐

  1. 抖音短视频运营借势热点:有哪些热点渠道,有哪些热点改编的套路。

    抖音短视频运营如何借助热点:有哪些热点渠道,有哪些热点改编的套路. 前几篇我们说过了视频起号,发短视频,今天我们来聊一下怎么跟热点结合创造爆款. 热点怎么去借势,然后有哪些热点渠道,有哪些热点的改编的 ...

  2. 手机开热点显示互联网无服务器,win10热点无互联网连接的具体解决办法【图文】...

    在笔记本电脑中,可以通过wifi共享热点给手机共享上网,但最近有不少win10旗舰版系统用户跟小编反映说自己手机连接热点的时候,出现了显示无互联网连接的情况,不知道怎么办.所以下面小编就来为大家分享w ...

  3. Win7通过无线网卡共享本地网络,开启WiFi热点以及关闭WiFi热点

    Win7通过WiFi共享本地网络,开启WiFi热点以及关闭WiFi热点 Windows10上开启热点十分方便,只要通过"设置 -> 网络和internet -> 移动热点&quo ...

  4. win7台式计算机怎么连热点,win7热点怎么设置 win7热点设置的具体方法介绍

    随着社会的不断发展,电脑已经走进了亿万家庭之中,这几年电脑的发展非常快,尤其是 笔记本电脑 ,大家知道吧,现在的笔记本电脑可以像智能手机一样进行WiFi连接了,也可以设置热点,估计大多数的人不知道这一 ...

  5. 树莓派上开热点(AP)的三种办法实践结果V2

    树莓派上开热点(AP)的三种办法实践结果 date: 2021-08-02 lastmod: 2021-09-19 背景 UC2 项目中树莓派大脑和子模块有两种方式连接方式,一种是采用 I2C 总线通 ...

  6. 鲜果网热点改版,增加热点专题

    涂雅导读: 最近鲜果的在线阅读器常常出现一些问题,比如是更新不及时,主要的原因是鲜果正在改版,只有在会员登录之后才会出现新片的热点,看一下新版和旧版有什么区别吧. 全文: 常用鲜果阅读器的细心用户可能 ...

  7. HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较

    转载于:http://www.cnblogs.com/wgp13x/p/4245182.html 摘要:   在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出 ...

  8. Hbase rowkey设计原则,热点问题

    rowKey的作用 读写数据时通过 RowKey 找到对应的 Region: MemStore 中的数据按 RowKey 字典顺序排序: HFile 中的数据按 RowKey 字典顺序排序. rowk ...

  9. 热点热词 新闻热点 最新新闻数据API接口-天狗热点热词开放平台

    为什么80%的码农都做不了架构师?>>>    热点热词API列表 API 描述 基础 www.tngou.net/api/top/classify 取得热点热词分类,可以通过分类i ...

最新文章

  1. python生成条形码
  2. Python 统计列表中元素出现的次数
  3. 如何发表顶级期刊论文
  4. linux md5sum获取文件指纹数值并使用cut切割
  5. 2008年初看的书[带简评]
  6. zbrush 添加纹理贴图_zbrush零基础新手必看入门讲解
  7. s8 android10,旧机不是部部有 三星 Galaxy S8 将不会获得 Android 10 更新
  8. ansible基本模块-copy
  9. Linux 运维工程师学习成长路线上要经历哪四个阶段?
  10. MYSQL复习笔记12-视图
  11. 【GCC】gcc编译器的使用
  12. SPSS编程-统计自动化-Python脚本开发
  13. 深入了解 Squid 代理服务器及应用
  14. 冰桶挑战:一个吊炸天的病毒式营销案例剖析
  15. Detecting Deep-Fake Videos from Appearance and Behavior
  16. [音乐推荐]水木年华 - 借我一生
  17. 《物流与供应链管理》读书笔记
  18. 使用karma+mocha+chai为vue组件库做单元测试
  19. RouterOS 常用命令、用法及官方资料
  20. 调剂云南师范大学计算机专硕,云南师范大学2018年硕士研究生调剂公告

热门文章

  1. LeetCode38——Count and Say
  2. 交换机与路由技术-15-链路聚合
  3. 从0配置halo博客并配置SSL
  4. Line披露母公司Naver详情:去年营收28.4亿美元
  5. Naver 三方登录
  6. 雅虎通网络摄像头被黑客攻击
  7. mysql数据库审计agent_数据库审计-数据库审计系统功能-安华金和
  8. 扔鸡蛋问题 动态规划大法
  9. 中国职业社交网优士网​融资300万美元
  10. latex eps图片不显示