Spark大数据分与实践笔记(第五章 HBase分布式数据库-03)

本文详细介绍了HBase的架构,包括Client、Zookeeper、HMaster和HRegion Server的角色。接着深入探讨了HBase的物理存储,如Region的存储方式、切分方式、分布方式以及表的存储方式。此外,还解析了HBase的寻址机制和读写数据流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第五章 HBase分布式数据库

5.4 深入学习HBase原理

5.4.1 HBase架构

HBase构建在Hadoop HDFS之上,Hadoop HDFS为HBase提供了高可靠的底层存储支持,Hadoop MapReduce为HBase提供高性能的计算能力,Zookeeper为HBase提供稳定服务和容错机制。HBase的整体架构如下所示。
在这里插入图片描述

在图中,HBase含有多个组件。下面,针对HBase架构中的核心组件进行详细介绍,具体如下:
●Client
即客户端,它通过RPC协议与HBase通信。
●Zookeeper
即分布式协调服务,在HBase集群中的主要作用是监控HRegionServer的状态。
●HMaster
即HBase的主节点,用于协调多个HRegion Server,主要用于监控HRegion Server的状态以及平衡HRegion Server之间的负载。
●HRegion Server
即HBase的从节点,它包括了多个HRegion,主要用于响应用户的I/O请求,向HDFS文件系统读写数据。
●HRegion
即HBase表的分片,每个Region中保存的是HBase表中某段连续的数据。
●Store
每一个HRegion包含一或多个Store。每个Store用于管理一个Region上的一个列族。
●MemStore
即内存级缓存,MemStore 存放在store中的,用于保存修改的数据(即KeyValues形式)。
●StoreFile
MemStore中的数据写到文件后就是StoreFile,StoreFile底层是以HFile文件的格式保存在HDFS上。
●HFile
即HBase中键值对类型的数据均以HFile文件格式进行存储。
●HLog
即预写日志文件,负责记录HBase修改。当HBase读写数据时,数据不是直接写进磁盘,而是会在内存中保留一段时间。

5.4.2 物理存储

HBase分布式数据库最重要的就是存储数据,下面, 从四个方面详细介绍HBase的物理存储。

5.4.2.1 Region在行方向上的存储方式

HBase表的数据按照行键RowKey的字典序进行排列,并且切分多个HRegion存储,存储方式如图所示。
在这里插入图片描述

图5-1 Region在行方向上的存储

5.4.2.2 HRegion的切分方式

每个Region存 储的数据是有限的,如果当Region增大到-个阀值(128) 时,会被等分切成两个新的Region切分方式如图所示。
在这里插入图片描述

图5-2 HRegion的切分

5.4.2.3 HRegion的分布方式

一个HRegion Server上可以存储多个Region,但是每个Region只能被分布到一个HRegion Server上,分布方式如下。
在这里插入图片描述

图5-3 HRegion的分布方式

5.4.2.4 HBase表的存储方式

MemStore中存储的是用户写入的数据,一旦MemStore存储达到阈值时,里面存储的数据就会被刷新到新生成的StoreFile中(底层是HFile),该文件是以HFile的格式存储到HDFS上,具体存储方式如下所示。
在这里插入图片描述

图5-4 HBase表的存储方式

5.4.3 寻址机制

当HBase表查询数据遵循的是寻址机制,接下来,通过一张图来学习一下HBase的寻址机制,具体如下所示。
在这里插入图片描述

Zookeeper中存储的是ROOT表的数据,而ROOT表中存储的是META表的Region信息,也就是所有RegionServer的地址。接下来,分步骤介绍Hbase的寻址流程,具体如下:

  1. Client访问ZooKeeper请求行键rk001数据所在RegionServer地址。
  2. Zookeeper从 --ROOT-表中查询所有表的.MATA.信息。
  3. .META.表将具体存储行键rk001数据的RegionServer的地址返回给Client。
  4. Client获取到地址后,向该RegionServer发送查询行键为rk001这条数据请求,RegionServer收到请求,就查询行键rk001的Region。
  5. RegionServer将行键为rk001这条数据的所有信息返回给Client。

5.4.4 HBase读写数据流程

数据库最常见的操作就是读写数据,接下来,针对HBase读写数据的流程进行详细介绍。

5.4.4.1 读数据流程

从HBase中读数据的流程其实就是寻址的流程,具体流程如下:

  1. Client通过ZooKeeper、“-ROOT-”表及“.META.”表来找到目标数据所在的RegionServer地址。
  2. Client通过请求RegionServer地址来查询目标数据。
  3. RegionServer定位到目标数据所在的Region,然后发出查询目标数据的请求。
  4. Region先在MemStore中查找目标数据,若查找到则返回;若查找不到,则继续在StoreFile中查找。
5.4.4.2 写数据流程

即存储数据,从客户端把目标数据存储到服务器上。具体流程如下:

  1. Client根据行键RowKey找到对应的Region所在的RegionServer。
  2. Client向RegionServer发送提交写入数据的请求。
  3. RegionServer找到目标Region。
  4. Region检查数据是否与Schema一致。
  5. 若Client没有指定版本,则获取当前系统的时间作为数据版本。
  6. 将更新的记录写入预写日志HLog和MemStore中。
  7. 判断 MemStore是否已满,若满则进行flush操作,将数据写入StoreFile文件,反之,则直接将数据存入MemStore。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妉妉师姐

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值