一、数据热点

hbase的表的多个region中有一个region的读写并发很高,其他的region相对来说读写少,造成热点的region
一定要避免数据热点的问题!

1、防止数据热点的有效措施

1.1加盐

这里所说的加盐不是密码学中的加盐,而是在 rowkey 的前面增加随机数,具体就是给rowkey 分配一个随机前缀以使得它和之前的rowkey 的开头不同。分配的前缀种类数量应该和你想使用数据分散到不同的 region 的数量一致。加盐之后的 rowkey就会根据随机生成的前缀分散到各个region上,以避免热点。

1.2哈希

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

1.3反转

第三种防止热点的方法是反转固定长度或者数字格式的 rowkey。这样可以使得 rowkey中经常改变的部分(最没有意义的部分)放在前面。这样可以有效的随机 rowkey,但是牺 牲了 rowkey 的有序性。
反转 rowkey 的例子以手机号为 rowkey,可以将手机号反转后的字符串作为 rowkey,这 样的就避免了以手机号那样比较固定开头导致热点问题

1.4时间戳反转

一个常见的数据处理问题是快速获取数据的最近版本,使用反转的时间戳作为 rowkey的一部分对这个问题十分有用,可以用 Long.Max_Value - timestamp 追加到 key 的末尾,例 如 [key][reverse_timestamp] , [key] 的最新值可以通过 scan [key]获得[key]的第一条记录,因 为 HBase 中 rowkey 是有序的,第一条记录是最后录入的数据。比如需要保存一个用户的操作记录,按照操作时间倒序排序,在设计 rowkey 的时候,可以这样设计[userId 反转][Long.Max_Value - timestamp],在查询用户的所有操作记录数据的时候,直接指 定反转后的 userId,startRow 是[userId 反转][000000000000],stopRow 是[userId 反 转][Long.Max_Value - timestamp]如果需要查询某段时间的操作记录,startRow 是[user 反转][Long.Max_Value - 起始时间], stopRow 是[userId 反转][Long.Max_Value - 结束时间]

二、hbase设计

1、hbase 预分区

默认情况下,在创建 HBase 表的时候会自动创建一个 region 分区,当导入数据的时候,所有的 HBase 客户端都向这一个 region 写数据,直到这个 region 足够大了才进行切分。还有一种是可以加快批量写入速度的方法,就是通过预先创建一些空的 regions,这样当数据写入 HBase 时,会按照 region 分区情况,在集群内做数据的负载均衡。

2、列簇设计

1)具备相同的io属性的放在一个列簇里
2)经验值,列簇设计不要超过3个,最好一个

3、行键的设计

三个原则
1)唯一性

必须在设计上保证其唯一性。rowkey 是按照字典顺序排序存储的,因此,设计 rowkey 的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问 的数据放到一块。

2) rowkey 长度原则

Rowkey 是一个二进制码流,Rowkey 的长度被很多开发者建议说设计在 10~100 个字节,不过建议是越短越好,不要超过 16 个字节。
原因如下:
1、数据的持久化文件 HFile 中是按照 KeyValue 存储的,如果 Rowkey 过长比如 100 个字节,1000 万列数据光 Rowkey 就要占用 100*1000 万=10 亿个字节,将近 1G 数据,这会极大影响 HFile 的存储效率;
2、MemStore 将缓存部分数据到内存,如果 Rowkey 字段过长内存的有效利用率会降低, 系统将无法缓存更多的数据,这会降低检索效率。因此 Rowkey 的字节长度越短越好。
3、目前操作系统是都是 64 位系统,内存 8 字节对齐。控制在 16 个字节,8 字节的整数倍利用操作系统的最佳特性。

3)rowkey 散列原则

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

Hbase设计数据热点问题相关推荐

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

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

  2. 如何解决hbase中数据热点问题

    所谓数据热点, 指的是大量的数据写到hbase的某一个或者某几个region中, 导致其余的region没有数据, 其他region对应regionServer的节点承受了大量的并发请求, 此时就出现 ...

  3. Hbase设计,数据热点问题

    一.数据热点 hbase的表的多个region中有一个region的读写并发很高,其他的region相对来说读写少,造成热点的region 1.防止数据热点的有效措施 1.1加盐 这里所说的加盐不是密 ...

  4. 企业级数据仓库:数据仓库概述;核心技术框架,数仓理论,数据通道Hive技术框架,HBase设计,系统调度,关系模式范式,ER图,维度建模,星型/雪花/星座模式,数据采集同步,业务数据埋点,数据仓库规范

    文章目录 第一章 数据仓库概述 1.1 数据仓库简介 1.1.2 什么是数据仓库? 1.1.3 OLTP 与 OLAP 1.2 数据仓库技术架构 1.3 课程目标 第二章 核心技术框架 2.1 数据仓 ...

  5. hbase 二进制数据写入_分布式数据库HBase的架构设计详解(有彩蛋)

    原标题:分布式数据库HBase的架构设计详解(有彩蛋) 本文根据DBAplus社群第99期线上分享整理而成,文末还有好书送哦~ 讲师介绍 陈鸿威 云财经大数据CTO 曾任百度高级工程师,现主持设计开发 ...

  6. Hbase写数据,存数据,读数据的详细过程

    Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多 ...

  7. Designing Data-Intensive Applications(设计数据密集应用)- O'Reilly 2017 读书笔记

    Designing Data-Intensive Applications The Big Ideas Behind Reliable, Scalable, and Maintainable Syst ...

  8. Hbase 设计与开发实战

    Hbase 概述 大数据及 NoSQL 的前世今生 传统的关系型数据库处理方式是基于全面的 ACID 保证,遵循 SQL92 的标准表设计模式(范式)和数据类型,基于 SQL 语言的 DML 数据交互 ...

  9. 设计数据密集型应用 第六章:分区

    6. 分区 我们必须跳出电脑指令序列的窠臼. 叙述定义.描述元数据.梳理关系,而不是编写过程. -- Grace Murray Hopper,未来的计算机及其管理(1962) 文章目录 6. 分区 术 ...

最新文章

  1. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)
  2. 调用另一个Activity
  3. Asp.net用户管理API的应用(上)
  4. SQL Server-流程控制 7,Return 语句
  5. java怎么读取文件夹下的_java怎么读取读取文件夹下的所有文件夹和文件?
  6. final关键字修饰类,方法以及变量的特点 学习
  7. 1486. 数组异或操作
  8. 201521123070 《JAVA程序设计》第6周学习总结
  9. VBA collection函数回传
  10. 拆弹专家(密码BFS)
  11. 电流检测的方式与误差来源
  12. Quartus ROM,RAM计组实验
  13. 网络OSI(七层模型)
  14. 关于mac下搭建php、apache、mysql环境
  15. 苹果CMS V8 韩剧TV 一款特别精美漂亮的模板 包含PC端+WAP端
  16. dell服务器sas2.5英寸1t硬盘10k,0XTH17 ST900MP0026 900GB 15K SAS 2.5寸DELL服务器硬盘
  17. 误删硬盘文件怎么恢复?
  18. Git 里面的 origin 到底代表什么意思?【转载】
  19. maven的setting文件-02
  20. APP高曝光率到智能化投放,SDK猫眼信息流广告的投放策略!

热门文章

  1. 欧洲气象中心资料(ERA)下载方法
  2. VS2005 安装SP1后,无法正常初始化(0xc0150004)的解决办法
  3. 2020-10-05网络营销的起源及发展阶段
  4. 互联网公司的期权激励和期权估值问题
  5. 国泰君安国际获标普重申「BBB+」长期发行人评级
  6. VulnHub-MOMENTUM: 1靶机
  7. animaton动画
  8. IntelliJ IDEA中的神仙插件(写代码必备)
  9. TCL L55E5800A-UD ROOT 降级固件 V8-A962T01-LF1V026.zip
  10. 聚划算平台上多个商品怎样一次采集分类保存