大数据(5b)HBase架构、读写流程、分区

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩 regionserver堆栈内存大小,官方推荐每台regionserver内存大小设置20-24G,不推荐设置更大,因为更大的堆栈内存GC效率较低。,rowkey的设计至关重要,会影响region分布,如果rowkey设计不合理还会出现region写热点等一系列问题。需求:hbase存储的是用户的交易信息, 我想查某个用户在某个时间段内的交易记录,如何设计rowkey。用户id(md5), 用户名称, 交易时间, 交易金额, 交易说明。,或者数据在刚开始插入的数据都在一个region中,使得。 阅读详情

架构

简单架构图

每个Region Server有多个Region
每个Region有多个Store
每个Store有多个StoreFile

Master是Region Server的管理者
实现类:HMaster

Region Server是Region的管理者
实现类:HRegionServer
对Region操作,例如:Region切分…

Client

详细架构图

StoreFile保存实际数据的物理文件
以HFile的形式存储在HDFS上
其中数据是有序的

MemStore写缓存
HFile中的数据 要求有序
数据会先存MemStore并排序,然后等待时机刷写HFile
每次刷写都会形成一个新的HFile

写数据流程

  1. PUT
  2. 客户端访问Zookeeper:请问hbase:meta表位于哪个RegionServer
  3. Zookeeper返回信息:hbase:meta表所在的Region Server
  4. 访问对应的RegionServer,获取hbase:meta
  5. 根据读请求的namespace:table/rowkey,查询目标在哪个RegionServer的哪个Region中
  6. 将该table的region信息以及meta表的位置信息缓存在客户端的MetaCache,方便下次访问
  7. 与目标RegionServer进行通讯
  8. 将数据顺序写入(追加)到WAL
  9. 将数据写入对应的MemStore,并排序
  10. 向客户端发送ack
  11. 等到MemStore的刷写时机后,将数据刷写StoreFile

hbase:meta
hbase:meta表保存了 含所有region的 列表
hbase:meta的位置 被储存在Zookeeper中

WAL
数据要经MemStore排序后才能刷写HFile,内存中的数据容易丢失
对此,数据会先写到Write-Ahead LogFile,然后再写入MemStore
在系统故障的时,可通过该日志文件重建数据

MemStore Flush

MemStore刷写时机说明
MemStore级别某个MemStore的大小达到(默认128M)
HRegion级别Region中所有MemStore总大小达到(默认512M)
HRegionServer级别RegionServer中所有MemStore总大小达到(默认 j a v a _ h e a p × 0.4 × 0.95 java\_heap \times 0.4 \times 0.95 java_heap×0.4×0.95)
HLog级别当WAL文件的数量超过(默认32;新版已经废弃?)
定期刷写(默认1小时)
手动刷写flush 表名或flush 区域名分别对一个或多个Region进行刷写

读数据流程

  1. GET:Table/RowKey
  2. 客户端访问Zookeeper
  3. Zookeeper返回信息:hbase:meta表位于哪个RegionServer
  4. 访问对应的RegionServer的hbase:meta表
  5. 根据读Table/RowKey查询出目标数据位于哪个RegionServer中的哪个Region中
  6. 将该table的region信息和meta表的位置信息缓存在客户端的MetaCache,以便下次访问
  7. 与目标RegionServer进行通讯
  8. 在BlockCache(读缓存)查询目标数据
  9. MemStore中查询目标数据,如果BlockCache中未查到相应数据则扫描对应的HFile文件,HFile中扫描到的数据块写入BlockCache,并将查到的 所有数据 进行合并
  10. 将合并后的最终结果返回给客户端

StoreFile Compaction(HBase文件合并精简)

MemStore每次刷写都会生成一个新HFile
同一字段不同版本(timestamp)和不同类型操作(Put/Delete)的数据可能分布在不同的HFile
查询时需要遍历所有的HFile,太多HFile会降低效率
为减少HFile个数,清理 过期的 和 删的 数据,会进行StoreFile Compaction

Compaction分两种:Minor Compaction和Major Compaction

en🔉cn
compactionkəmˈpækʃənn. 压紧;精简;密封;凝结
minorˈmaɪnəradj. 未成年的;次要的;较小的;n. 未成年人;vi. 辅修
majorˈmeɪdʒəradj. 主要的;重要的;主修的;n. [人类] 成年人;主修科目;vi. 主修

分区

Region Split(Region自动切分机制)

默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行切分

预分区

  • 每一个Region维护着Start Row与End Row
    如果某数据符合某个Region的RowKey范围,则该数据交给这个Region维护
  • 预先将数据所要投放的分区大致地规划好,可以提高HBase性能
create 'yy','f1',SPLITS=>['11','22']

RowKey设计

主要目的 :让数据均匀分布在所有Region,减少数据倾斜

设计原则说明备注
长度RowKey不能太长,一般<16字节RowKey过长会浪费磁盘空间
唯一性两条数据的RowKey不能相同
均匀分布保证数据分散存储
设计方案e.g.
hash、散列值原RowKey为1001,SHA-1 后变成dd01903921ea24941c26a48f2cec24e0bb0e8cc7
反转20170524000001=>10000042507102
随机值20170524000001=>ae86_20170524000001
Hbase倾斜优化实践 Hbase 作为一个分布式的、多版本的开源 KV 数据库,面对大数据也能提供随机的、实时的读写性能。那么,性能如此强大的 Hbase,内部的数据存储结构是怎样设计的呐?基于其存储结构,其读写过程又是怎样的呐?难道 Hbase 就没有弊端了吗?在实践中我们如何去应用 Hbase?接下来我们将一步一步揭开这些问题的面纱。 阅读详情

相关推荐

Hive与HBase深度对比:大数据存储与查询的最佳实践

大数据时代,数据类型从“结构化表格”扩展到“半结构化日志”“非结构化文本”,业务需求从“离线报表统计”延伸到“实时用户行为查询”。Hive与HBase正是应对这两类需求的典型工具:Hive擅长处理海量结构化数据的离线分析,HBase则专注于高并发、低延迟的实时读写。本文将覆盖两者的核心原理、存储模型、查询方式、适用场景,并通过实战案例展示如何根据业务需求选择工具。本文将按照“概念类比→原理拆解→实战对比→场景总结”的逻辑展开:先用生活案例解释Hive与HBase的核心差异;

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 773

HBase 学习笔记

文章目录1. HBase 是什么?hbase的概念HBase的特点行存储和列存储各自优缺点?2. HBase 的架构 + 工作流程(读&写)HBase的架构HBase 的读写流程HBase 的寻址机制HBase的高级特性3. HBase 的优缺点?有哪些使用场景?4. HBase 的基本使用/快速入门5. HBase 的优化?**Rowkey的设计****数据预分区**参数/配置的优化列族的设计6. HBase 相关的面试问题HBase 为什么快?数据flush流程,数据合并的过程,Region切分

wx_start_ag的博客 2090

大数据领域HBase的表结构设计优化技巧

数据分布挑战:如何避免热点Region,实现负载均衡查询效率挑战:如何优化基于RowKey的范围查询与随机查询存储效率挑战:如何平衡读写性能与存储开销演进管理挑战:如何应对数据模式变化与历史数据迁移这些挑战在数据规模增长时呈非线性放大,早期设计缺陷可能导致后期重构成本呈指数级增长。A[需求分析] --> A1[数据量预估]A --> A2[读写比例]A --> A3[查询模式]A --> A4[数据生命周期]B[RowKey设计] --> B1[分布均匀性测试]

软件工程实践的博客 1002

Hbase架构和读写流程

本篇文章将简单的讲述Hbase的架构和读写流程,多为理论部分,不涉及API代码从官方介绍可以知道,Hbase是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。

j218255的博客 1264

鸿蒙【ArkTS】使用TS装饰器封装网络请求HTTP

在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的@ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。这里采用TS的装饰器实现AOP效果 完成前后端接口风格的统一

weixin_60376559的博客 5608

SpringBoot+VUE3实战:如何用WebSocket搞定网页端语音通话(避坑指南)

本文详细介绍了如何使用SpringBoot和VUE3结合WebSocket技术实现网页端语音通话功能。从环境配置、WebSocket服务端实现到前端音频处理,提供了完整的开发指南和避坑建议,帮助开发者快速构建稳定高效的实时语音通信系统。

weixin_29021195的博客 221

HBase读写缓存

目录读写缓存BlockCacheLRUBlockCacheSlabCacheBucketCache 读写缓存   HBase上RegionServer的cache主要分为两个部分,分别是memstore&blockcache,其中memstore主要用于写缓存,而blockcache用于读缓存。   当数据写入HBase时,会先写入memstore,RegionServer会给每个region提供一个memstore,memstore中的数据达到系统设置的阈值后,会触发flush将memstore中

ThreeAspects的博客 1759

用CentOS 7安装cadence搭建适合IC Design的科研环境(四)——IC617、MMSIM151、calibre2015安装过程step by step

以下操作都在root权限下执行。建立安装目录建议把这种大型软件装在/opt目录下。mkdir -p /opt/cadence/installscape mkdir -p /opt/mentor/Calibre2015其中-p参数是直接建立父目录。因为IC617和MMISM151会自己建立安装目录,所以在这里没有建相关目录。而calibre则是默认安装在安装包所在的目录下,所以需要提前建立。解压安

maxwell2ic的博客 7万+

Hbase框架详解

Hbase框架详解

weixin_47120324的博客 1316

DDR4 硬件设计笔记

DDR4-DRAM是第四代支持双倍数据读取,支持随机位置存取的静态存储器。DDR4-DRAM的工作原理。DDR之T拓扑和Fly-by拓扑。DDR的硬件设计。DDR4 PCB设计要点介绍。DDR4之PCB走线间距的串扰评估。DDR4之内存通道(channel)和内存列(rank)。

qq_26815321的博客 1万+

Unity 数字孪生笔记1 工具介绍

前言 工欲善其事必先利其器 流程思考 数字孪生本质上一种基于实际物理数据的可视化方案,通过对接实际数据,在三维界面中展示孪生结果。 那么这个流程就很简单了。 整个流程分为三块:数据来源-》数据分析-》数据展示 输入数据 首先我们需要考虑我们能拿到什么。第一,实际物体的三维数据从哪里来,第二,实际数据怎么获取到。 模型数据 工业上常常会用到CAD模型,CAD模型具有精确、统一的特点,但是CAD不是三角面片,我们不能直接导出到Unity中,而且导入之后有很多不合理的地方,例如面片杂乱、面数过高等问题。针对这个

Thissky的专栏 1万+

HBase架构

HBase采用形式,主要组成:HMaster,HRegionServer,HRegion,ZooKeeper,DFS Client。

qq_73339471的博客 1465

[USACO2023-JAN-Bronze] T2 Air Cownditioning II 题解

[USACO2023-JAN-Bronze] T2 Air Cownditioning II题解

1651

Hive与HBase深度对比:从架构原理到应用场景

维度HiveHBase核心定位数据仓库,批处理数据库,实时查询数据存储逻辑表,数据在HDFS物理表,自管理存储处理速度慢(分钟级)快(毫秒级)操作类型全表扫描、聚合随机读写、范围扫描适用场景报表分析、数据挖掘在线服务、实时查询数据来源文本文件清洗后MySQL导入、实时写入一句话总结需要全表扫描、复杂分析→选择Hive + Hadoop需要随机查询、实时访问→选择HBase + Hadoop两者不是竞争关系,而是互补关系。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4584

Qt代码-军用仿真系统基础框架

ui->mapClickLabel->setText(QString("地图点击:(%.1f, %.1f)米").arg(worldPos.x()).arg(worldPos.y()));emit simulationEvent(QString("添加实体: %1 (ID: %2)").arg(attr.name).arg(entity.id()));// 像素坐标→世界坐标(米)

寒寒豆豆软件公司的博客 168

五、MT8168 音频驱动之SPEAKER

本章主要讲解MT8168平台的内部SPEAKER驱动配置。分为HP接法和LINE OUT接法。2.1.3 audio_custom_exp.h设置。2.1.4 mixer_paths.xml设置。2.2.3 mixer_paths.xml设置。2.1.2 ProjectConfig 设置。2.2.2 ProjectConfig 设置。2.2.1 deconfig设置。2.1.1 DTS设置。......

Joon2020的博客 1664

HBase读写性能解析以及提升性能方案

HBase写流程原理 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpCulF9X-1615795053119)(C:\Users\Administrator\Pictures\Saved Pictures\QQ截图20210223163312.png)] 1)Client 先访问 zookeeper,获取 hbase:meta 表位于哪个 Region Server。 2)访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespa

。。。。。。 5038

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大数据开发(HBase面试真题-卷二)

通过Get操作,可以获取到指定行键对应的完整数据行,包括所有的行族和列的数据。预分区键可以是任意的字节数组,通常是根据数据的特点和访问模式来选择的。另外,HBase还提供了强一致性的数据模型和灵活的数据模式,可以根据需求动态地添加和删除列。是的,HBase的rowkey不能超过一定的长度是为了保证HBase的性能和存储效率。此外,rowkey的唯一性是HBase中数据的检索和存储的重要依据。读缓存可以提高读取性能,因为内存的读取速度远快于磁盘的读取速度。预分区的规则可以是基于哈希值,也可以是基于范围。

key_honghao的博客 2071

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

大数据大厂面试题

inputFile通过split被切割为多个split文件,通过Record按行读取内容给map(自己写的处理逻辑的方法) ,数据被map处理完之后交给OutputCollect收集器,对其结果key进行分区(默认使用的hashPartitioner),然后写入buffer,

Shawn的个人博客 1213

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hbase 预分区建表以及rowkey设计

hbase 预分区建表 create 'table_name',{NAME =>'cf',VERSIONS => '1',COMPRESSION =>'SNAPPY'}, SPLITS_FILE => '/root/data/partition.txt' 其中partition.txt是一个本地文件 可以看下表的分区情况,如下被分成了十个分区 对应rowkey 设计...

努力奔跑的蜗牛 1073

HBase知识点总结(面试)

阅读摘记,更新中... 目录 LSM-Tree是什么? 为何HBase速度很快? HBase与Hive区别? HBase与传统关系型数据库区别? HBase的读写流程? Rolling WAL? Hbase memstore 的刷写时机? 为什么不建议在 HBase 中使用过多的列族? HRegionServer 宕机如何处理? HBase合并机制? HBase读性能优...

Jodness' Blogs 3026

hbase的表读写错误

Hbase集群问题案例 问题描述: 集群检查正常,hbase中某一张表或多张表,读与写都不行,hbase shell查询报错信息如下: ERROR: org.apache.hadoop.hbase.NotServingRegionException: Region ebike_locus_1,304,1531291013653.4c4a5ca7069f9758d97b089785b61264. i...

weixin_40766412的博客 693

【大数据 复习】第4章 HBase(重点)

(2)如果要对hdfs上存储的海量数据进行增删改查,,我要往里面插入数据,还要修改数据,还有删除里面某一行的数据,还要精确的查询某一行数据,这是hdfs做不到的,所以有了HBase。(3)客户端并不是直接从Master主服务器上读取数据,而是通过Zookeeper获得Region的存储位置信息后,直接从Region服务器上读取数据。(4)一个表根据RowKey切分成HRegion分散存储在不同的HRS中,一个HRS中可以有多个不同的HRegion(可以是来自不同的表)有,就直接从内存中读取,非常快。

永烨的博客 3249

5.hbase 批量导入数据

Bulk Loading Importtsv 生成HFile 导入HBase 自定义MR 生成HFile 导入HBase 注意事项 源码下载 Bulk Loading 向hbase写入数据常用两种方式: 客户端 API写入 Mapreduce任务TableOutputFormat格式输出 然而,对于超大量的数据写入,这两种方式都不合适,会非常占用内存和耗时而且JVM GC和...

文洲的专栏 3418

HBase案例 | 20000个分区导致HBase集群宕机事故处理

这是典型的HBase小集群过载问题,某客户现场10节点HBase集群支持百TB的业务量,region分区数量过多,最终导致集群宕机。阅读查看事故分析

Focus on Lakehouse 2419

HBase在大数据领域环保数据处理中的应用

近年来,环境监测传感器、卫星遥感、无人机巡检等技术的普及,使得环保数据呈现多源(传感器/业务系统/第三方平台)异构(结构化/半结构化/非结构化)海量(TB级至PB级)的特征。传统关系型数据库在面对亿级以上数据量时,常出现存储成本高、写入性能下降、实时查询延迟大等问题。HBase作为Apache Hadoop生态的核心组件,基于分布式列式存储架构,天然适合处理高吞吐量的读写场景和稀疏数据模型,成为环保数据处理的理想选择。

专注搜索引擎技术 1069
上一篇: Linux一行命令根据关键词杀程序【附图】
下一篇: 大数据(电商行业)规模参考
小基基o_O
博客等级 码龄9年 4413粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值