当前位置:网站首页>Rowkey设计
Rowkey设计
2022-07-29 05:24:00 【a568353087】
HBase是根据Rowkey来进行检索的,系统通过找到某个Rowkey (或者某个 Rowkey 范围)所在的Region,然后将查询数据的请求路由到该Region获取数据。HBase的检索支持3种方式:
(1) 通过单个Rowkey访问,即按照某个Rowkey键值进行get操作,这样获取唯一一条记录;
(2) 通过Rowkey的range进行scan,即通过设置startRowKey和endRowKey,在这个范围内进行扫描。这样可以按指定的条件获取一批记录;
(3) 全表扫描,即直接扫描整张表中所有行记录。
HBASE按单个Rowkey检索的效率是很高的,耗时在1毫秒以下,每秒钟可获取1000~2000条记录,不过非key列的查询很慢。
目前操作系统是都是64位系统,内存8字节对齐。控制在16个字节,8字节的整数倍利用操作系统的最佳特性。
(2)MemStore将缓存部分数据到内存,如果Rowkey字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率。因此Rowkey的字节长度越短越好。
(3)目前操作系统是都是64位系统,内存8字节对齐。控制在16个字节,8字节的整数倍利用操作系统的最佳特性。
如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个 RegionServer上堆积的热点现象,这样在做数据检索的时候负载将会集中在个别RegionServer,降低查询效率。
通过巧妙的RowKey设计使我们批量获取记录集合中的元素挨在一起(应该在同一个Region下),可以在遍历结果时获得很好的性能。
rowkey唯一原则:
必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。
加盐
这里所说的加盐不是密码学中的加盐,而是在rowkey的前面增加随机数,具体就是给rowkey分配一个随机前缀以使得它和之前的rowkey的开头不同。分配的前缀种类数量应该和你想使用数据分散到不同的region的数量一致。加盐之后的rowkey就会根据随机生成的前缀分散到各个region上,以避免热点。
哈希
哈希会使同一行永远用一个前缀加盐。哈希也可以使负载分散到整个集群,但是读却是可以预测的。使用确定的哈希可以让客户端重构完整的rowkey,可以使用get操作准确获取某一个行数据
反转
第三种防止热点的方法时反转固定长度或者数字格式的rowkey。这样可以使得rowkey中经常改变的部分(最没有意义的部分)放在前面。这样可以有效的随机rowkey,但是牺牲了rowkey的有序性。
边栏推荐
猜你喜欢
ML7 self study notes
FPGA based: multi-target motion detection (hand-in-hand teaching ①)
arduino uno错误分析avrdude: stk500_recv(): programmer is not responding
Power electronics: single inverter design (matlab program +ad schematic diagram)
QT学习笔记-Qt Model/View
智能货架安全监测系统
智慧充电桩系统由什么组成?
Hal library learning notes - 9 DMA
Hal learning notes - Basic timer of 7 timer
CV520国产替代Ci521 13.56MHz 非接触式读写器芯片
随机推荐
Hal library learning notes-11 I2C
synchronized八锁现象理解
【软件工程之美 - 专栏笔记】21 | 架构设计:普通程序员也能实现复杂系统?
八大排序-----------------堆排序
2022 spring move - core technology FPGA post technical aspects (one side experience)
QT learning notes QT model/view
链表--------------------尾插法
Ml8 self study notes LDA principle formula derivation
基于51单片机的四路抢答器仿真
智慧充电桩系统由什么组成?
Based on STM32: couple interactive doll (design scheme + source code +3d drawing +ad circuit)
HAL库学习笔记- 8 串口通信之使用
CS4344国产替代DP4344 192K 双通道 24 位 DA 转换器
太原市公交路线爬取
Power electronics: single inverter design (matlab program +ad schematic diagram)
EPS32+Platform+Arduino 跑马灯
低功耗蓝牙5.0芯片nrf52832-QFAA
简洁代码实现pdf转word文档
【软件工程之美 - 专栏笔记】23 | 架构师:不想当架构师的程序员不是好程序员
Jingwei Qili: OLED character display based on hmep060 (and Fuxi project establishment demonstration)