HBase理论_背景特点及数据单元及与Hive对比
本文结合了个人的笔记以及工作中实践经验以及参考HBase官网,我尽可能把自己的知识点呈现出来,如果有误,还请指正。
1. HBase背景
HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随机读写操作,HBase正是为此而出现。HBase参考 Google 的 Bigtable 实现,以键值对的形式存储。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。
分析这句话包含的隐藏信息:



2. hbase特点
-
建立在HDFS之上的分布式面向列的数据库
-
KV结构数据库,原生不支持标准SQL,属于NOSQL数据库
-
支持快速随机读写海量数据
-
具备HDFS的高容错能力
-
不属于关系型数据库,适合存储非机构化数据,基于列存储


3. hbase和hive的区别
-
hive适合统计分析,hive底层执行的是MapReduce,延迟较高
-
列式存储适合关联查询场景,而行式存储适合点查询场景
-
hbase适合大数据量查询,不适合统计分析,hbase底层采用KV结构存储,可以快速返回数据(能知道你的数据存在哪个region上)
-
hbase采用列式存储,可以动态扩展列(想加多少列就能加多少)
具体对上面解释的笔记


4. hbase数据单元
4.1 基础知识
hbase是一个稀疏的、多维度、有序的映射表,表中的每个单元是通过行键、列族、列限定符和时间戳组成的索引来标识的,每个单元存储的值是一个未经解释的二进制数组byte[],没有数据类型,当用户在表中存储数据时,每一行都有一个唯一的行键和任意多的列,表的每一行由一个或者多个列族组成,一个列族可以包含任意多个列。
-
行键rowkey(主键)
每条数据的主键,rowkey是有序的,采用字典顺序排序,方便快速查找,rowkey的设计至关重要,建表时不指定。
-
列族column family(将相同类别的字段,放到同一个列族中)
多个列的组合,建表时指定。
-
列限定符column(字段)
归属于一个列族,代表着一列,建表时不指定,可动态扩展列,表达方式为column family:column,例:cf:name,标识在cf列族下的name列。
-
时间戳version
默认为系统时间戳timestamp,代表着一份数据不同时间节点的版本。
-
值value
由rowkey、column family、column、version索引检索得到的唯一值,key<rowkey、column family、column、version> ,value<唯一的值>,KV结构就由此而来。
4.2 hbase架构细节解释
索引
表中的每个单元是通过行键、列族、列限定符和时间戳组成的索引来标识的



【这张图片引用参考:https://zhuanlan.zhihu.com/p/151871736】
单元存储
每个单元存储的值是一个未经解释的二进制数组byte[],没有数据类型

hive行式存储与hbase列式存储
如下示例进行两种数据存储方式的对比: 当用户在表中存储数据时,每一行都有一个唯一的行键和任意多的列,表的每一行由一个或者多个列族组成,一个列族可以包含任意多个列。

列族
列族column family(将相同类别的字段,放到同一个列族中)

4.3两种数据存储方式的对比:
hive行式存储
| rowkey | name | age | address |
|---|---|---|---|
| 1001 | user1 | 20 | beijing |
| 1002 | user2 | 21 | shanghai |
-
hbase列式存储
| rowkey | cf | column | version(时间戳) | value |
|---|---|---|---|---|
| 1001 | cf | cf:name | t1 | user1 |
| 1001 | cf | cf:age | t2 | 20 |
| 1001 | cf | cf:address | t3 | beijing |
| 1002 | cf | cf:name | t4 | user2 |
| 1002 | cf | cf:age | t5 | 21 |
| 1002 | cf | cf:address | t6 | shanghai |
hbase 版本
hbase没有修改语法,当要修改一条数据只需要直接写入即可。
version默认是由系统时间戳表示,当用户重复写入一条数据时,hbase会记录两条数据,因为rowkey、column family、column相同,此时则使用version字段进行区分,并且会保留上一个版本的数据,同一条数据不同版本使用version倒序排序!如下:
原数据
| rowkey | cf | column | version | value |
|---|---|---|---|---|
| 1001 | cf | cf:name | t1 | user1 |
| 1001 | cf | cf:age | t2 | 20 |
| 1001 | cf | cf:address | t3 | beijing |
| 1002 | cf | cf:name | t4 | user2 |
| 1002 | cf | cf:age | t5 | 21 |
| 1002 | cf | cf:address | t6 | shanghai |
此时用户要修改如下数据name的value值
| rowkey | cf | column | value |
|---|---|---|---|
| 1001 | cf | cf:name | newusername |
执行添加数据命令put 'namespace:tablename','1001','cf:name','newusername'后hbase表数据
| rowkey | cf | column | version | value |
|---|---|---|---|---|
| 1001 | cf | cf:name | t7 | newusername |
| 1001 | cf | cf:name | t1 | user1 |
| 1001 | cf | cf:age | t2 | 20 |
| 1001 | cf | cf:address | t3 | beijing |
| 1001 | cf | cf:name | t4 | user2 |
| 1001 | cf | cf:age | t5 | 21 |
| 1001 | cf | cf:address | t6 | shanghai |
当一条数据存在多个版本的时候,查询如果不指定版本,则默认查询最新一条数据,hbase的version也不是可以无限存的,默认版本数为3,可以设置最多存储多少个版本,当超过设定的版本数之后则删除最早版本的数据。
laoli_matrix70演示:插入数据

参考资料:
Apache HBase® Reference Guide HBASE官网
相关文章:
HBase理论_背景特点及数据单元及与Hive对比
本文结合了个人的笔记以及工作中实践经验以及参考HBase官网,我尽可能把自己的知识点呈现出来,如果有误,还请指正。 1. HBase背景 HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随机读写操作,HBase正是为此而出现。…...
生产模式打包
在生产模式下打包 Node.js 和前端(例如 Vue 或 React)应用时,通常需要对代码进行优化,使其在生产环境中运行更高效。以下是如何在生产模式下配置和打包项目的步骤: 1. Node.js 生产模式打包 Node.js 本身不需要像前端…...
Vue的路由
Vue的路由 出发点:遇到多页面网页的反复跳转,有些繁琐,可以通过Vue的路由实现单页面中数据的变化 实现单页面中数据的变化(通过Vue-router来进行操作的,数据的请求获取也需要ajax异步交互),具…...
Spring框架之策略模式 (Strategy Pattern)
策略模式(Strategy Pattern)详解 策略模式(Strategy Pattern)是一种行为型设计模式,用于定义一系列算法,并将每种算法封装到独立的策略类中,使它们可以相互替换,从而使算法的变化独…...
探索Google Earth Engine:利用MODIS数据和R语言进行2000-2021年遥感生态指数(RSEI)的时空趋势分析
前段时间,小编学习了在GEE上进行遥感生态指数(RSEI)的评估,非常头疼,但是实验了两周后,亲测有效,主要采用的是MODIS数据分析了2000-2021年中国内蒙古某地的RSEI时间序列分布状况,现在把学习的代码分享给大家。 1 GEE计算RSEI 1.1研究区域导入与初步定义 var sa = ee…...
多商户中英双语电商系统设计与开发 PHP+mysql
随着全球电商市场的扩展,多商户平台成为了越来越多商家参与全球贸易的重要方式。为了适应不同语言用户的需求,尤其是中英双语用户的需求,设计一个支持中英双语的电商系统显得尤为重要。本文将重点探讨如何设计一个多商户中英双语电商系统&…...
牵手App红娘专属1V1服务,打造贴心交友指导
对于年轻一代而言,婚恋方式已明显区别于传统,他们更倾向于直接、活泼的交流方式,享受着在轻松愉快的氛围中边玩边交友的乐趣。线上社交平台,尤其是那些基于兴趣构建的交友模式,正逐渐成为他们探索爱情、寻找共鸣的新舞…...
论文解析:边缘计算网络中资源共享的分布式协议(2区)
目录 论文解析:边缘计算网络中资源共享的分布式协议(2区) 核心内容: 核心创新点的原理与理论: 多跳边缘计算场景 一、边缘计算的基本概念 二、多跳边缘计算场景的含义 三、多跳边缘计算场景的应用 四、多跳边缘计算场景的优势 论文解析:协作边缘计算网络中资源共…...
Android Osmdroid + 天地图 (一)
Osmdroid 天地图 前言正文一、配置build.gradle二、配置AndroidManifest.xml三、获取天地图的API Key① 获取开发版SHA1② 获取发布版SHA1 四、请求权限五、显示地图六、源码 前言 Osmdroid是一款完全开源的地图基本操作SDK,我们可以通过这个SDK去加一些地图API&am…...
浅谈:基于三维场景的视频融合方法
视频融合技术的出现可以追溯到 1996 年 , Paul Debevec等 提出了与视点相关的纹理混合方法 。 也就是说 , 现实的漫游效果不是从摄像机的角度来看 , 但其仍然存在很多困难 。基于三维场景的视频融合 , 因其直观等特效在视频监控等相关领域有着…...
PostgreSQL序列:创建、管理与高效应用指南
一、引言 在PostgreSQL中,序列(Sequence)是一种用于生成唯一标识符的数据库对象。它们常常被用于为主键字段提供连续且唯一的值,特别是在创建新记录时。序列提供了一种机制,能够确保每次调用都能返回一个唯一的值&…...
部署安装jdk8\redis\mysql8\nginx
安装jdk8 linux安装jdk8详细步骤_linux jdk8安装-CSDN博客 安装redis 安装redis 后台启动命令 cd /ra/redis-6.0.0/src ./redis-server --daemonize yes安装mysql8.0(自定义目录安装) 1、创建自己的mysql-8.0,解压mysql安装包 tar -zxv…...
重要通知:Sedex 旧平台即将关闭
我们正在对 Sedex 平台进行一些重要更新,这些更新将更好地提升您的用户体验。 作为更新计划的⼀部分,我们将在 2025 年 2 ⽉关闭 Sedex Advance 平台(即,Sedex 旧平台)。旧平台的⼀些功能将转移到当前的平台上。这些改…...
Windows配置NTP时间同步
Windows下实现NTP时间同步 1、Windows时间服务(W32Time)2、Windows 时间同步的工作原理3、配置和管理 Windows 时间同步3.1 命令行工具:w32tm3.2 控制面板中的设置 4. 高级设置(Windows Server 环境)5.调整时间同步的间隔5.1 通过组策略调整时…...
学Linux的第八天
目录 管理进程 概念 程序、进程、线程 进程分类 进程前后台调用 查看进程 ps命令 unix 风格 bsd风格 GNU风格 top命令 格式 统计信息区 进程信息区:显示了每个进程的运行状态 kill命令 作用 格式 管理进程 概念 程序、进程、线程 程序&#x…...
2024IJCAI | MetalISP: 仅用1M参数的RAW到RGB高效映射模型
文章标题是:《MetaISP:Effcient RAW-to-sRGB Mappings with Merely 1M Parameters》 MetaISP收录于2024IJCAI,是新加坡国立大学(Xinchao Wang为通讯作者)和华为联合研发的新型ai-isp。 原文链接:MetaISP 【1】论文的…...
aws-athena查询语句总结
完全归于本人mysql语句小白,是一点也写不出来,故汇总到此 1. cloudtrail ## 查询事件排序 SELECT eventname,eventtime,count(eventname) as num FROM your_athena_tablename where eventtime between 2024-11-10 and 2024-11-11 group by eventname…...
电信网关配置管理后台 upload_channels.php 任意文件上传漏洞复现
0x01 产品描述: 电信网关配置管理后台是用于管理和配置电信网关的设备,提供了一系列功能来帮助用户监控和管理网络设备。以下是电信网关配置管理后台的主要功能和操作方法。0x02 漏洞描述: 电信网关配置管理系统/bak_manager/upload_channels.php 接口存在文件上传…...
Vue全栈开发旅游网项目(11)-用户管理前端接口联调
联调基本步骤 1.阅读接口文档 2.配置接口地址 3.使用axios获取数据 4.将数据设置到模型层 1.发送验证码联调 1.1 配置接口地址 文件地址:src\utils\apis.js //系统相关的接口 const SystemApis {sliderListUrl:apiHost"/system/slider/list/",//发送…...
react 中 useContext Hook 作用
useContext是一个用于在组件之间共享数据的重要钩子函数 一、跨组件数据共享 1. 简化多层级组件数据传递 例如:在一个具有多层级菜单结构的应用中,如果要将用户权限数据从根组件传递到最深层的菜单项组件,可能需要经过多个中间组件的 prop…...
HTTP协议认识
什么是 Http 协议? 超文本传输协议,规定了浏览器与服务器通信的规则 Http 协议的特点? 面向连接、安全的协议(基于 TCP)基于请求响应模型的无状态的协议 按F12 一、状态码大类 状态码分类说明1xx响应中…...
解决Redroid安卓12串流黑屏:修改SurfaceFlinger绕过Secure Flag的实战记录
解决Redroid安卓12串流黑屏:修改SurfaceFlinger绕过Secure Flag的实战记录 在RK3588开发板上运行Redroid容器时,许多开发者会遇到一个棘手问题:使用scrcpy等工具串流显示某些应用界面时,屏幕突然变黑。这并非硬件故障,…...
告别盲测!用Arduino UNO和VL6180X做个桌面防撞小助手(OLED实时显示距离)
用Arduino UNO和VL6180X打造智能桌面防撞系统 每次在办公桌上不小心碰倒水杯或手机从桌边滑落时,那种手忙脚乱的场景想必大家都不陌生。今天我们就来解决这个日常小烦恼——利用Arduino UNO开发板和VL6180X传感器,配合OLED显示屏,制作一个能实…...
Unity原生依赖管理:EDM4U原理、避坑与CI/CD工程化实践
1. 为什么Unity项目越来越离不开EDM4U:从“手动拖拽”到“依赖即代码”的真实痛感我第一次在2019年接手一个中型AR项目时,团队还在用最原始的方式管理第三方库:把.dll、.asmdef、Plugins/Android目录下的.aar文件,甚至Unity Packa…...
智慧铁路列车车辆和人员检测数据集VOC+YOLO格式5059张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):5059标注数量(xml文件个数):5059标注数量(txt文件个数):5059标注类别…...
UV-UI终极指南:如何在30分钟内构建跨平台应用
UV-UI终极指南:如何在30分钟内构建跨平台应用 【免费下载链接】uv-ui uv-ui 破釜沉舟之兼容vue32、app、h5、小程序等多端基于uni-app和uView2.x的生态框架,支持单独导入,开箱即用,利剑出击。 项目地址: https://gitcode.com/gh…...
如何在Hermes Agent项目中自定义Provider接入Taotoken多模型服务
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何在Hermes Agent项目中自定义Provider接入Taotoken多模型服务 Hermes Agent 是一个功能强大的AI代理框架,它允许开发…...
UE5 VSCode头文件跳转失效的根因与解决方案
1. 这不是VSCode配置问题,是UE5工程结构和编译系统在“悄悄改规则” 你有没有试过:在VSCode里打开一个刚生成的UE5 C项目,CtrlClick某个UObject子类,光标纹丝不动?或者输入 UStaticMesh:: 后,智能提示里…...
B站成分检测器:5分钟快速上手终极指南,智能识别评论区用户真实身份
B站成分检测器:5分钟快速上手终极指南,智能识别评论区用户真实身份 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-c…...
企业级AI Agent安全治理:从“能用“到“敢用“的五维框
一、为什么企业需要Agent治理框架我们公司最近在帮一家制造业客户做AI Agent数字员工的落地项目。客户之前已经自己部署了一批Agent,分别处理品质查询、物料追踪、报表生成等业务。运行三个月后,IT部门发现了三个让人头疼的问题:有个Agent累计…...
