【大数据精讲】HBase基本概念与读写流程

目录

基本概念

概念

数据模型

[Name Space命名空间](#Name Space命名空间)

Table

Row

Column

[Time Stamp](#Time Stamp)

Cell

逻辑结构

json

物理存储结构

基础架构

Meta表架构

RegionServer架构

⭐️写流程

⭐️读流程


基本概念

Apache HBase -- Apache HBase™ Home

" This project's goal is the hosting of very large tables -- billions of rows X millions of columns --"

概念

  • 海量数据:10亿行、100万列
  • 非关系型数据库:kv结构
  • 稀疏的:不像关系型数据库表,即使没有数据也要留空
  • 分布式的
  • 持久的
  • 多维的:hashmap是单维度的
  • 排序的:排序后可以使用比如二分查找
  • map映射:k:v
    • key:行键、列键和时间戳索引作为key
    • value:未解释的字节数组,未解释指即经过序列化的

HBase使用与BigTable非常相似的数据模型,用户将数据行存储在带标签的表中。数据行具有可排序的键和任意数量的列。该表存储稀疏,因此如果用户喜欢,同一表中的行可以具有疯狂变化的列。

数据模型

Name Space命名空间

类似数据库概念,其下有多个表,自带两个:hbase和default

  • hbase:系统使用,存放内置表,不要操作
  • default:用户默认使用的

Table

hbase在定义表时只需要声明列族即可,不需要声明具体的列。数据存储是稀疏的,可以动态、按需指定,可以轻松应对字段变更

Row

行由RowKey和多个Column组成的,数据是按照RowKey字典顺序存储的,查询时只能按照RowKey进行检索,所以RowKey的设计十分重要。

hbase不能写sql,比如where name=xx不行,没这个功能,只能按rowkey读取,这也是hbase不太好用的原因。

Column

ColumnFamily列族+ColumnQualifier列名组成。

如info:name,info:age

建表时只需要指明列族,而列名无需预先定义。

Time Stamp

用来标记版本

Cell

即k:v模型,key由{rowkey,column family: column qualifier, timestamp}组成来,唯一确定的单元。cell中的数据全部是字节码形式存储。

cell针对的是底层存储StoreFile而言的,指的是底层存储的一行数据,其他是针对表而言的

逻辑结构

json

  • 列族:column family
  • 列:column
  • row key:行号,用来排序和整理数据,特点:一定是按照字典序排序好的,字典序:row_key11在row_key2前面

横向拆分:按行拆分region

竖向拆分:按列族拆分为store

物理存储结构

物理存储结构即为数据映射关系,而在概念视图的空单元格,底层实际根本不存储。

  • Timestamp
    • 时间戳用于标记版本
    • 不同版本version的数据根据timestamp进行区分,读取数据默认读取最新的版本
    • HDFS存储有一个标志性的特点:不能够修改数据
    • 在不能改数据的基础上怎么实现改,以时间戳作为版本
  • Type:标记,写入Put 删除Delete
    • 对于删除操作,其类型为DeleteColumn

基础架构

Meta表架构

警告:不要修改

System Table:hbase:meta

表名:[table],[region start key],[region id]

第一列:info:regioninfo 为region信息,存储一个HRegionInfo对象

第二列:info:server 当前region所处的RegionServer信息,包含端口号

第三列:info:serverstartcode 当前region被分到RegionServer的起始时间

如果一个表处于切分的过程中,即region切分,还会多出两列info:splitA和info:splitB,存储值也是HRegionInfo对象,拆分结束后,删除这两列

RegionServer架构

⭐️写流程

master只负责修改和写hbase/meta表,读找zk就可以了,zk会告诉你表在哪

仅能保证单文件HFile/storeFile有序

⭐️读流程

hash有个特点:说没有一定没有,说有不一定有

相关推荐
Baihai_IDP8 分钟前
LLM 应用评估综合指南(多轮对话系统、RAG、AI Agent)
人工智能·面试·llm
字节跳动数据平台26 分钟前
得物×火山引擎:Data Agent驱动财务管理智能升级
大数据
想ai抽27 分钟前
Spark的shuffle类型与对比
大数据·数据仓库·spark
写不来代码的草莓熊35 分钟前
vue前端面试题——记录一次面试当中遇到的题(10)
前端·vue.js·面试
linda26181 小时前
String() 和 .toString()的区别
前端·javascript·面试
顾林海1 小时前
Android UI优化:让你的APP从“卡顿掉帧”到“丝滑如德芙”
android·面试·性能优化
智海观潮1 小时前
JVM垃圾回收器、内存分配与回收策略
java·大数据·jvm
召摇1 小时前
Tau² 基准测试:通过提示重写提升 GPT-5-mini 性能 22%
人工智能·面试·openai
用户091 小时前
Replit通过计划模式约束AI编码代理:安全协作的新范式
人工智能·面试·openai
渣哥2 小时前
IOC 容器的进化:ApplicationContext 在 Spring 中的核心地位
javascript·后端·面试