大数据学习(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
相关推荐
lalapanda37 分钟前
UE学习记录part16
学习
@PHARAOH39 分钟前
WHAT - React 进一步学习推荐
前端·学习·react.js
kovlistudio40 分钟前
红宝书第四十讲:React 核心概念:组件化 & 虚拟 DOM 简单教程
开发语言·前端·javascript·学习·react.js·前端框架
螺旋小蜗42 分钟前
Maven工具学习使用(十二)——extension和depency的区别
学习·extension·depency
却道天凉_好个秋42 分钟前
音视频学习(三十四):H264中的宏块
学习·音视频·宏块
却道天凉_好个秋1 小时前
音视频学习(三十三):GOP详解
学习·音视频·gop
键盘敲没电1 小时前
【iOS】UIPageViewController学习
学习·ios·cocoa
啥都不懂的小小白1 小时前
Elasticsearch入门指南(一)
大数据·elasticsearch·搜索引擎
caijingshiye2 小时前
KHARPA币:结合传统与区块链技术的DeFi DAO革命
大数据·区块链
cwtlw2 小时前
PhotoShop学习09
笔记·学习·其他·photoshop