大数据学习(105)-Hbase

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


HBase简介

HBase是一个基于Hadoop的分布式、可扩展、支持大数据存储的数据库。

**使用场景:**需要随机或实时读写大数据的场景

**目标:**支持数十亿行和数百万列的大表

底层技术对应关系:

|---------------|-------------------------|--------------------------------------|----------------------------------------------------|
| 分布式列存储 | BigTable | HBase(基于Hadoop) | BigTable是Google的分布式列存储系统,HBase是其开源实现,提供稀疏多维映射表。 |
| 分布式文件系统 | GFS(Google File System) | HDFS(Hadoop Distributed File System) | GFS是Google的早期分布式文件系统,HDFS是其开源版本,支持大规模数据存储。 |
| 海量数据处理框架 | MapReduce | Hadoop MapReduce | MapReduce是Google提出的分布式计算模型,Hadoop MapReduce是其开源实现。 |
| 分布式协同服务管理 | Chubby | Zookeeper | Chubby是Google的分布式锁服务,Zookeeper是其开源实现,用于协调分布式系统。 |

数据模型

HBase采用表来组织数据,采用命名空间(NameSpace)对表进行逻辑分组。

NameSpace: 命名空间,类似于mysql中的database,默认有default和hbase,用户表默认在default中

表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。

行:每个HBase表都由若干行组成,每个行由可排序的**行键(row key)**来标识。

列:采用列族:列限定符的形式确定具体的一列。

列族:一个HBase表被分组成许多"**列族"(Column Family)**的集合,它是基本的访问控制单元。列族可以动态添加,但在定义表时需要指定至少一个列族,在使用某个列族时要事先定义。

列限定符:表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一个列族里面的数据存储在一起。列族里的数据通过**"列限定符"(Column qualifier)**来定位。

单元格:在HBase表中,通过行、列族和列限定符确定一个"单元格"(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[],所以在定义表时无需定义数据的类型,使用时用户需要自行进行数据类型转换。

时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引, HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)

HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳,在进行数据存储的时,其采用key-value形式:Table + RowKey(升序) + ColumnFamily + Column + Timestamp --> Value

系统架构

HBase采用主从结构设计,基础存储依赖于HDFS,协调服务依赖于Zookeeper集群,HMaster负责HBase的管理操作,HRegionServer负责数据的相关操作。

客户端(Client)

客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程。

对于管理类操作,Client与HMaster进行RPC

对于数据读写操作,Client与HRegion Server进行RPC

Zookeeper服务器

Zookeeper是Chubby算法的一种开源实现

  1. 保证任何时候,集群中只有一个活跃的master,因为为了保证安全性会启动多个Master
  2. 存储所有Region的寻址入口
  3. 实时监控Region Server的状态,将Region Server的上下线的信息汇报给HMaster。
  4. 存储Hbase的元数据(Schema)包括,知道整个Hbase集群中有哪些Table,每个 Table 有哪些column family(列族)

Master服务器

主服务器主要负责表和Region的管理工作, 其实现类为 HMaste :

  • 对于表的操作:create, delete, alter
  • 对于 RegionServer 的操作:
  1. 实现不同Region服务器之间的负载均衡
  2. 在Region分裂或合并后,负责重新调整Region的分布
  3. 对发生故障失效的Region服务器上的Region进行迁移

Region服务器

Region服务器是HBase中最核心的模块,维护Master分配给他的 Region ,其实现类为 HRegionServer ,主要组成如下:

  • 一个Region服务器包含多个Region,这些Region共用一个HLog文件
  • Region由一个或者多个Store组成,每个Store保存一个 Columns Family。
  • 每个Strore又由一个MemStore和0至多个StoreFile组成。
  • MemStore存储在内存中,StoreFile存储在HDFS
  • StoreFile的底层实现是HFile

主要作用如下:

  1. 对于数据的操作:get, put, delete
  2. 对于 Region 的操作:splitRegion、compactRegion
相关推荐
九年义务漏网鲨鱼1 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
jz_ddk1 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
爱莉希雅&&&3 小时前
技术面试题,HR面试题
开发语言·学习·面试
爱吃面的猫4 小时前
大数据Hadoop之——Flink1.17.0安装与使用(非常详细)
大数据·hadoop·分布式
Chef_Chen4 小时前
从0开始学习计算机视觉--Day08--卷积神经网络
学习·计算机视觉·cnn
weixin_446260854 小时前
Isaac Lab:让机器人学习更简单的开源框架
学习·机器人
Fireworkitte5 小时前
安装 Elasticsearch IK 分词器
大数据·elasticsearch
ywyy67986 小时前
短剧系统开发定制全流程解析:从需求分析到上线的专业指南
大数据·需求分析·短剧·推客系统·推客小程序·短剧系统开发·海外短剧系统开发
我真不会起名字啊6 小时前
OpenSceneGraph(OSG)开发学习
学习
永日456706 小时前
学习日记-spring-day42-7.7
java·学习·spring