hbase 预分区_hbase的rowKey设计原则
前言
访问hbase table中的行,只有三种方式:
1 通过单个row key访问
2 通过row key的range
3 全表扫描
可以看出rowkey设计的好与坏直接决定了查询速度,在hbase中快速定位也是依靠布隆过滤器,然而布隆过滤器依靠的就是rowkey,所以设计一个好的row可以省不少事情。
但是下面列出的方式紧紧是提供一种设计原则,最重要的还是要具体问题具体分析,然后设计出比较符合业务内容的rowkey.
rowkey长度原则
rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存,一般设计成定长。议越短越好,不要超过16个字节,设计过长会降低memstore内存的利用率和HFile存贮数据的效率。
这个需要着重说一下,首先一条数据是根据rowkey来当成索引的,如果过长就会快速占据memstore的128M,然后被刷写到磁盘,也就是说相同的空间存贮的内容被rowkey占据了一大部分,减少了主要内容的存贮
rowkey散列原则
建议将rowkey的高位作为散列字段,这样将提高数据均衡分布在每个RegionServer,以实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息。
所有的数据都会集中在一个RegionServer上,这样在数据检索的时候负载会集中在个别的RegionServer上,造成热点问题,会降低查询效率。
rowkey唯一原则
必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,
因此,设计rowkey的时候,要充分利用这个排序的特点,可以将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。
hbase表的热点
1.什么是热点
检索habse的记录首先要通过row key来定位数据行。当大量的client访问hbase集群的一个或少数几个节点,造成少数region server的读/写请求过多、负载过大,而其他region server负载却很小,就造成了“热点”现象。
2.热点的解决办法
2.1预分区
预分区的目的让表的数据可以均衡的分散在集群中,而不是默认只有一个region分布在集群的一个节点上。
2.2加盐
这里所说的加盐不是密码学中的加盐,而是在rowkey的前面增加随机数,具体就是给rowkey分配一个随机前缀以使得它和之前的rowkey的开头不同。
2.3哈希
哈希会使同一行永远用一个前缀加盐。哈希也可以使负载分散到整个集群,但是读却是可以预测的。使用确定的哈希可以让客户端重构完整的rowkey,可以使用get操作准确获取某一个行数据。
2.4反转
反转固定长度或者数字格式的rowkey。这样可以使得rowkey中经常改变的部分(最没有意义的部分)放在前面。这样可以有效的随机rowkey,但是牺牲了rowkey的有序性。
体会
rowkey既想要能够快速检索,就想要内容最好集中到少量的region中,但是一旦集中了,就会产生热点问题,所以,他们是相伴相生。
总结
点击关注不迷路,有啥想和我交流欢迎下方留言。
hbase 预分区_hbase的rowKey设计原则相关推荐
- Hadoop生态圈-Hbase的rowKey设计原则
Hadoop生态圈-Hbase的rowKey设计原则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/ ...
- Hbase rowkey设计原则,热点问题
rowKey的作用 读写数据时通过 RowKey 找到对应的 Region: MemStore 中的数据按 RowKey 字典顺序排序: HFile 中的数据按 RowKey 字典顺序排序. rowk ...
- hbase 预分区设计
文章目录 hbase 预分区设计 一.手动切割分区 二.自动切割分区 三.预先切割分区 四.三种预分区方式 1.范围预分区 2.16进制预分区 3.按文件中的分区 hbase 预分区设计 hbase ...
- hbase的rowkey设计原则及热点问题
1.1 hbase数据库介绍 1.简介 hbase是基于Google BigTable模型开发的,典型的key/value系统.是建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写no ...
- Hbase预分区入门
什么是Hbase 预分区? 在建表的时候,可以给每个region划分不同的rowkey范围. 之后在插入数据的时候,数据就会依据rowkey的不同进入到不同的region中.当然,每个region在h ...
- rowKey设计原则
rowkey设计原则 a.唯一原则 一定要保证当前的rowkey是所有数据的唯一一行 b.长度原则 在满足唯一原则的基础上,尽可能的减少rowk的容量大小 如果rowkey有特殊的排序需求的时候,要补 ...
- 【HBase】热点现象及 RowKey 设计(转)
原文链接:https://blog.csdn.net/qq_26803795/article/details/105994960?spm=a2c6h.12873639.0.0.62201019lo19 ...
- 最通俗易懂的解释hbase热点问题rowkey设计原则region分区及解决方案
关于热点问题,我简单陈述容易理解: 我们最开始hbase创建表默认是一个region,而我们所谓的热点问题其实就是对某一个region的过量访问造成的 Hbase当发现一个region存储数据量大于阈 ...
- Hbase Rowkey设计原则
Hbase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这三个维度可以对HBase中的数据进行快速定位 ...
最新文章
- 小米发力AI场景下的“快应用”,投百亿资源扶持开发者
- C语言经典例21-猴子吃桃问题
- SQL获取刚插入的记录的自动增长列ID的值
- [云炬创业管理笔记]第三章测试5
- 【二维差分】Monitor
- java webview 对象_Android – 将JSON对象从webview javascript传递给java
- 破解寝室安装老毛子路由器校园网电信闪讯锐捷认证
- 苹果PD20W快充方案缺货,芯片供应不足,怎么破局?
- ESDCAT静电猫项目
- 【图像处理】基于灰度矩的亚像素边缘检测方法理论及MATLAB实现
- 业务员如何听懂采购要吃回扣的暗语或者动作?
- “互联网+政务”是什么?
- 二十一世纪大学英语读写教程学习笔记(原文)——7 - I Became Her Target(我成了她的靶子)
- python换位加密算法_柱状换位密码
- 「纯前端容器」打造无缝平滑的用户体验
- 使用 Kali Linux 爆破 WiFi 密码
- Spark抽取MySQL分表优化
- 生僻字用计算机的歌词,生僻字歌词带拼音版本:生僻字歌词是什么意思?
- jquery实现点击按钮变灰不可点击并开始倒计时10秒特效代码
- 供应链管理与企业边界—基于超边际的分析框架 (zt)
热门文章
- 安卓使用intent切换到同级窗口和子窗口,并从子窗口中获取返回数据
- 实现labelme批量json_to_dataset方法
- hdu 1176 免费馅饼(nyist 613)
- dsu on tree入门
- 在DataTable中执行DataTable.Select(条件),
- 不依赖jstack的java 线程dump和死锁检查工具
- The Windows Phone Emulator wasn't able to create the external network switches 解决方法
- Java SE 6生命将在今年11月终结
- [转载] python中三角函数_Python中的三角函数
- [转载] Python中的set(集合)数据类型