【赵渝强老师】HBase的体系架构

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文介绍了HBase的体系架构,包括HMaster、RegionServer和ZooKeeper的主要功能。HMaster负责Region的分配和管理,RegionServer处理数据的读写操作,ZooKeeper维护集群状态并协调分布式系统的运行。文章还详细解释了Region、WAL预写日志、Block Cache读缓存和MemStore写缓存的作用。

b034.png

在学习HBase的体系架构之前,需要先了解一下HBase中的一些术语。这些术语如下表所示。



从体系架构的角度看,HBase是一种主从架构,包含:HBase HMaster、Regionserver和ZooKeeper。视频讲解如下:


下图展示了这一架构。



其中:

  • HBase HMaster负责Region的分配及数据库的创建和删除等操作。
  • Region server负责数据的读写服务。
  • ZooKeeper负责维护集群的状态。


下面详细讨论HBase体系架构中每一个组成部分的作用。


一、主节点HMaster


HMaster是整个HBase集群的主节点,它的职责主要体现在以下几方面:

  1. 负责在Region Server上分配和调控不同的Region。
  2. 根据恢复和负载均衡的策略,重新分配Region。
  3. 监控Region Server的状态。
  4. 管理和维护HBase的命名空间,即NameSpace。
  5. 接收客户端的请求,提供创建,删除或者更新表格的接口。


另一方面,如果整个集群中只存在一个HMaser,将造成单点故障的问题。因此也需要基于ZooKeeper来实现HBase的HA(高可用)。但是HBase实现HA非常简单,因为在其体系架构中已经包含了ZooKeeper,因此只需要手动再启动一个HMaster作为Backup HMaster即可。


二、从节点Region Server


Region Server负责数据的读写操作。一个Region Server可以包含多个Region,而一个Region只能属于一个Region Server。那么什么是Region呢?可以把Region理解成是列族,它与列族的关系是一对多的关系。HBase表中的列族是根据rowkey的值水平分割成所谓的Region的。在默认情况下,Region的大小是1G,其中包含8个HFile的数据文件。而每个数据文件的大小正好是128M,与HDFS数据块的大小保存一致。每一个Region server大约可以管理1000个Region。


Region Server除了包含Region以外,还包含WAL预写日志、Block Cache读缓存和MemStore写缓存三个部分。

(一)WAL预写日志

Write-Ahead Logging是一种高效的日志算法,相当于Oracle中的redo log,或者是MySQL中的binlog。基本原理是在数据写入之前首先顺序写入日志,然后再写入缓存,等到缓存写满之后统一进行数据的持久化。WAL将一次随机写转化为了一次顺序写加一次内存写,在提供性能的前提下又保证了数据的可靠性。如果在写入数据完成之后发生了宕机,即使所有写缓存中的数据都丢失了,也可以通过恢复WAL日志达到数据恢复的目的。写入的WAL日志会对应有一个HLog文件。

(二)Block Cache读缓存

HBase将经常需要读取的数据放入Block Cache中,来提供读取数据的效率。当Block Cache的空间被占满后,将采用LRU算法将其中被读取频率最低的数据从Block Cache中清除。

(三)MemStore写缓存

MemStore中主要存储了还未写入磁盘的数据,如果此时发生了宕机,这部分数据是会丢失的。HBase中的每一个列族对应一个MemStore,其中存储的是按键排好序的待写入硬盘的数据,数据也是按Rowkey排好序写入HFile中的,最终保存到HDFS中。


提示:HBase表中的数据最终保存在数据文件HFile中,并存储与HDFS的DataNode上。在将MemStore中的数据写入HFile中的时候,采用顺序写入的机制,避免了磁盘大量寻址的过程,从而大幅提高了性能。在读取HFile的时候,文件中包含的Rowkey信息会被加载到内存中,这样就可以保证数据检索只需一次硬盘查询操作。


三、HBase中的ZooKeeper


ZooKeeper在整个HBase集群中主要维护节点的状态并协调分布式系统的工作。主要体现在以下几方面:

  1. 监控HBase节点的状态,包括:HMaster和RegionServer。
  2. 通过ZooKeeper的Watcher机制提供节点故障和宕机的通知。
  3. 保证服务器之间的同步。
  4. 负责Master选举的工作


下图展示了HBase在ZooKeeper中保存的数据信息。




相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
存储 SQL 数据库
【赵渝强老师】OceanBase的部署架构
OceanBase数据库支持两种部署架构:无共享(Shared-Nothing,SN)模式和共享存储(Shared-Storage,SS)模式。SN模式下,各节点对等,具备高扩展性、可用性和性能,运行于普通PC服务器集群;SS模式采用存算分离架构,租户数据存储在共享对象存储上,本地缓存热点数据。两种模式均支持高可用与多副本一致性,适用于不同业务场景。
189 1
|
4月前
|
XML 存储 分布式计算
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
HDFS(Hadoop分布式文件系统)由三个核心组件构成:NameNode、DataNode和SecondaryNameNode。NameNode负责管理文件系统的命名空间和客户端请求,维护元数据文件fsimage和edits;DataNode存储实际的数据块,默认大小为128MB;SecondaryNameNode定期合并edits日志到fsimage中,但不作为NameNode的热备份。通过这些组件的协同工作,HDFS实现了高效、可靠的大规模数据存储与管理。
350 70
|
2月前
|
存储 缓存 分布式数据库
【赵渝强老师】HBase的体系架构
HBase是一种基于BigTable思想的列式存储NoSQL数据库,适合数据分析与处理。其主从架构包含HBase HMaster、Region Server和ZooKeeper。HMaster负责Region分配及表管理;Region Server执行数据读写操作,并包含WAL预写日志、Block Cache读缓存和MemStore写缓存;ZooKeeper维护集群状态并协调分布式系统工作。通过视频讲解与架构图示,详细解析各组件功能与协作机制。
104 11
|
2月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的物理存储结构
本文介绍了HBase的存储结构,包括逻辑与物理存储结构。物理存储主要涉及StoreFile、HFile和HLog日志。HFile是HBase数据存储的核心格式,包含Data块、Meta块、File Info块等六部分,支持压缩以优化存储。HLog(预写日志)记录数据变更,确保数据可靠性,并在Region Server故障时用于恢复。最后,文章详细描述了HBase的写数据流程:先写入WAL日志,再写入MemStore,最终通过Flush操作将数据持久化到HFile中。
175 2
|
2月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的逻辑存储结构
HBase的逻辑存储结构包括命名空间、表和列族。命名空间类似关系型数据库中的数据库,用于逻辑划分和隔离数据;表以RowKey组织数据并按字典序排列,分为多个Region实现分布式存储;列族包含列且无需预先定义,由MemStore缓存写入数据,定期刷新生成Store File。文章通过视频和代码示例详细讲解了各部分的操作与功能。
|
3月前
|
存储 关系型数据库 MySQL
【赵渝强老师】TiDB的体系架构
TiDB是由PingCAP公司自主研发的开源分布式关系型数据库,支持HTAP(混合事务分析处理),具备弹性扩缩容、金融级高可用、实时分析等特性,兼容MySQL协议。其架构分为存储集群(行存TiKV与列存TiFlash)、调度集群(PD实例)和计算集群(TiDB实例)。相比传统单机数据库,TiDB优势显著:纯分布式设计、高扩展性、自动故障恢复、ACID事务支持及丰富的工具生态,适用于高可用与强一致要求的场景。
155 10
|
8月前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
163 0
|
4月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
104 0
|
8月前
|
SQL 分布式计算 Java
【赵渝强老师】Hive的体系架构
Hive是基于Hadoop的数据仓库平台,提供SQL-like的HQL语言进行数据分析,无需编写复杂的Java代码。Hive支持丰富的数据模型,可将SQL语句转换为MapReduce任务在Yarn上运行,底层依赖HDFS存储数据。Hive可通过CLI、JDBC和Web界面执行SQL查询。
308 2
|
8月前
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
173 0
【赵渝强老师】Memcached集群的架构