HBase RowKey散列和预分区

hbase热点问题解决(预分区) 已完成',4350,1,'1625615','2020-04-25 12:09:37','家用电器;已付款',3820,1,'9054826','2020-04-25 12:10:04','家用电器;已提交',8040,0,'8206022','2020-04-25 12:09:50','家用电器;已付款',8170,2,'7695668','2020-04-25 12:09:11','家用电器;已完成',410,0,'1923817','2020-04-25 12:09:56','家用电器; 阅读详情

RowKey设计三大原则

1、散列原则,不要用类似于时间戳这样的数据直接作为RowKey,如果确实需要用时间戳,可以把它放在低位,高位用散列来占位。
2、长度原则,其实总结就一句话,rowkey只是一个唯一标识符,并没有更多的实际意义,所以不要搞得太长,但是,我想说但是,如果我的rowkey是有意义的,那么让他长一些是不是也可以呢?
3、唯一性原则,这一点没什么好说的,RowKey需要唯一确定一条数据,所以必须唯一。

后面2条原则没什么好说的,我们重点来看一下散列原则,为什么会有这样的建议。

在HBase当中,表会被划分为1…n个Region,被托管在RegionServer中。Region二个重要的属性:StartKey与EndKey表示这个 Region维护的rowKey范围,当我们要读/写数据时,如果rowKey落在某个start-end key范围内,那么就会定位到目标region并且读/写到相关的数据。

如果我们在建表的时候,不预先设定好分区,随着表内数据的增多,HBase会自动把表进行split,但是这样做有几点问题,第一,分区的原则,可能并不是我们想要的;第二,在表内数据相对较少的时候,无法充分展现分布式并发处理的优势;第三,split操作,其实是比较耗资源的,如果数据增长过快,可能会相对频繁的发生。

那么,预分区又是如何实现的,我们看下面这个语句:

create 'testtable', 'common', 'data', {SPLITS => ['1','2','3']}

建好之后,我们可以在HBase的web页面当中,看到表的分区的分布情况:

这里写图片描述

我们看到,我们用1,2,3三个数,把一个table划分为了4个region,这四个region分别是:

x<1, 1<=x<2, 2<=x<3, 3<=x

那么我们在insert的数据的时候,又该怎么做呢?看下面的scala代码:

val p = new Put(Bytes.toBytes(String.valueOf(random.nextInt(4)) + new Date().getTime))

这句话是为一条新的数据,生成一个RowKey,那么我们的key值由2部分组成,随机散列+时间戳,其中随机散列包括:【0,1,2,3】一共4个值,根据上面我们划分的region,这4个值,将会映射到4个不同的region当中。

HBaseRowkey的散列与预分区设计 HBase中,表会被划分为1...n个Region,被托管在RegionServer中。Region二个重要的属性:StartKey与EndKey表示这个Region维护的rowKey范围,当我们要读/写数据时,如果rowKey落在某个start-endkey范围内,那么就会定位到目标region并且读/写到相关的数据。简单地说,有那么一点点类似人群划分,1-15岁为小朋友,16-39岁为年轻人,40-64为中年人,65岁以上为老年人。(这些数值都是拍脑袋出来的,只是举例,非真实),然后某人找队伍,然后根据年龄,处于哪个范围,就找到它所属的队伍。:(有点废话了。。。。然后,默认地,当我们只是通 立即下载

相关推荐

半导体关键系统之RMS浅谈

这种系统还要求设备在设备上的配方发生变化时通知工厂主机,并需要与EAP(Equipment Automation Process)联结,旨在实时管控自动化系统所用配方与用户当初的设定是否匹配,从而使得自动化系统所用的配方更加趋于安全。例如,制药行业中的药品生产管理系统(GMP),它对药品的生产过程进行严格控制,包括原材料的采购、生产工艺流程、质量控制等方面。这些系统通常与企业的生产系统集成,能够对产品的配方进行精细化管理,包括配方的设计、试验、验证、生产等环节。

阿拉伯梳子的专栏 6155

HBase Rowkey散列和预分区设计

我们可以控制在建表的时候,创建多个空region,并确定每个region的起始和终止rowky,这样只要我们的rowkey设计能均匀的命中各个region,就不会存在写热点问题。自然split的几率也会大大降低。当然随着数据量的不断增长,该split的还是要进行split。像这样预先创建hbase表分区的方式,称之为 预分区。

26857259 4925

STM32 I²C外设深度解析:时序配置、主从模式与可靠性工程

I²C是一种广泛应用于嵌入式系统的同步串行总线协议,其核心在于精确的时序控制与可靠的电气特性匹配。理解SCL/SDA信号建立/保持时间、上升下降沿约束及硬件滤波机制,是保障通信稳定的基础;STM32通过I2C_TIMINGR寄存器实现对PRESC、SCLH、SCLL、SDADEL和SCLDEL等关键参数的精细调控,直接影响tSU:DAT、tVD:DAT等标准时序合规性;该能力支撑工业级高可靠场景下的主从双向通信、时钟拉伸管理与错误恢复;本文聚焦STM32平台,结合寄存器级配置、状态机行为与实战调试经验,系统

weixin_42146230的博客 87

HBase-RowKey设计和预分区

本篇总结记录了在防止hbase产生热点问题时的解决方案,主要从两个方面进行分析,一设计合理的rowkey,将数据集进行合理的散列。二设计合理的预分区,将散列后的数据集均匀的插入到region中,以防止hbase产生数据倾斜等热点问题。后续遇到更好的设计方案再及时更新。

东境物语 2213

MATLAB与STK互联23:卫星对象操作(14)—仿真分析案例1,建立8个地面站,分析对卫星的可见性

学习到这里,我们有必要做个仿真分析案例,把之前我们学习的零散知识点串起来,看一下在真实的分析中怎么应用。 分析要求:建立8个地面站,分析每个地面站对某个轨道高度500km、倾角60°圆轨道的卫星,1天内的可见次数、可见弧长以及可见弧段间隔列表。 基本约束:地面站仰角8°~90°,作用距离<2000km,太阳矢量与地面站到卫星视线夹角不小于15°,可见弧段应大于30s。地面站站址可随机生成,但要求在南北纬50°范围内。 下面上代码: uiap = actxserver(‘STK11.application’)

ltylty001的博客 7491

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 664

[hbase]架构|读写流程|RowKey设计|预分区

HBase中的行是按照RowKey的字典顺序排序的,这种设计优化了scan操作,可以将相关的行以及会被一起读取的行存储在临近位置,便于scan。然而糟糕的RowKey设计是热点的源头。热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读、写),大量的访问会使热点Region所在的单个机器超出自身承受能力,引起性能下降甚至region不可能用,这也会影响同一个RegionServer上的其他region,而设计良好的RowKey可以使集群被均匀的利用。

胖胖的博客 1364

ChatGPT Windows桌面版:从安全下载到高效配置的全流程指南

WebView封装技术是将网页应用转化为独立桌面程序的核心方法,它通过嵌入浏览器内核实现跨平台功能复用。其原理在于利用Electron或Tauri等框架,将Web内容打包进原生应用外壳,同时注入系统级API调用能力。这项技术的工程价值在于显著提升了Web应用的系统集成度和用户体验,使其能够支持全局快捷键、独立进程和本地数据存储等原生特性。在AI助手深度集成工作流的应用场景中,这种封装模式解决了浏览器多标签页切换繁琐、会话管理不便等痛点。本文以ChatGPT桌面客户端为例,详细解析了基于开源项目的安全下载路径

weixin_30437847的博客 484

hbase调优知识点(预分区和rowkey)

一、预分区 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候, 所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。 一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入 HBase时,会按照region分区情况,在集群内做数据的负载均衡。 如果知道hbase数据表的key的分布情况,就可以在建表的时候对hbase进行region的预分区。这样做的好处是防止大数据量插入的热点问题,提高数据插入的效率

zzds111的博客 1443

全桥 LLC 谐振变换器详细解析:结构 + 控制 + 工作原理全搞懂!

在现代高效率电源系统中,LLC 谐振变换器🔥早已成为降损利器。尤其是全桥 LLC 拓扑结构,由于其在、副边整流管的 ZCS(零电流关断),再加上优秀的效率表现,已经成为服务器电源、电动汽车 OBC、光伏逆变等场景的首选。那么,全桥 LLC 到底长啥样?它的控制方式是怎么回事?具体工作波形又是如何呢?今天我们就来一篇讲清楚、讲透彻的文章!🚗💨。

weixin_43199439的博客 3520

YOLOv10改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

如何寻找创新点?为什么要使用这个模块?如何才能提升模型的精度?这是贯穿我们研究始终的问题。创新点在这个专栏中我已经整理好了,这已经省去了大部分时间,但是当我们使用这些新的模块去优化已有的模型,如何才能提升模型的精度,才是我们要达到的最终目标。当然我们可以使用传统的A+B+C的方法去堆积模块,然后是进行大量的实验去排列组合以实现最终的精度提升,这无可厚非。

Limiiiing的博客 1万+

HBase Rowkey的散列与预分区设计

1.如何防止热点? 2.如何预分区?         HBase中,表会被划分为1...n个Region,被托管在RegionServer中。Region二个重要的属性:StartKey与EndKey表示这个Region维护的rowKey范围,当我们要读/写数据时,如果rowKey落在某个start-end key范围内,那么就会定位到目标region并且读/写到相关的数据。简单地说,有那么一

iwantknowwhat的专栏 4629

【SCADA】KingSCADA将数据插入SQLServer的方法

1、创建数据库及数据表格;2、配置ODBC数据源。3、通过KingSCADA与数据库建立连接,将数据写入数据库对应表格。

做有价值的事,积累有价值的笔记! 4959

HBase RowKey设计核心指南:避坑、散列、预分区与性能优化

RowKey是HBase分布式存储的基石概念,其本质是按字典序排序的物理存储键,直接决定数据分布、查询效率与集群稳定性。理解LSM-Tree结构和Region分裂机制,才能掌握RowKey设计原理;合理运用散列(如MurmurHash3)、加盐、时间戳反转等技术可有效规避写热点;结合业务查询模式进行前缀设计,支撑高效Scan与范围查询,是提升吞吐与降低延迟的关键技术价值。典型应用场景包括实时日志分析、电商订单系统、风控规则匹配及政务报表统计。本文聚焦RowKey设计实战方法论,覆盖长度控制、字符集规范、时间

weixin_33416697的博客 230

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hbase 热点(数据倾斜)问题解决方案---rowkey散列和预分区设计

转载自http://student-lp.iteye.com/blog/2309075                                                                            Hbase 热点(数据倾斜)问题解决方案---rowkey散列和预分区设计   hbase数据倾斜    hbase热点问题    rowke

Spark2creat_palains的博客 3460

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: SparkSQL操作RDD转DataFrame
下一篇: RDD,DataFrame,DataSet区别
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值