浅析HBase架构及读写流程

HBase是一款基于HDFS的分布式NoSQL数据库,解决HDFS的随机读写瓶颈,适用于大数据量、随机读写和稀疏字段场景。其架构包括主节点(HMaster)管理和从节点(HRegionServer)。主节点负责元数据管理、RegionServer调度和Zookeeper通信,而从节点负责数据存储、StoreFile的刷新与合并、Region分裂等。HBase的读写流程涉及Zookeeper、Region定位、数据缓存和异步写入等机制。

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

#博学谷IT学习技术支持#

HBase简述

HBase是一款Apache下的基于HDFS的分布式NoSQL数据库,主要用于解决HDFS分布式存储不能实现随机读写的瓶颈,适用于大数据量存储、随机读写、字段分布稀疏的场景。

HBase架构

HBase是一款分布式存储数据库,分为主从节点,具体架构如下图所示:

  1. HBase 架构图
    在这里插入图片描述

  2. HBase 主节点
    HBase 主节点上启动HMaster服务,用于管理从节点,主要包括以下功能:
    1)管理元数据,主要是分配和下线Region;
    2)管理RegionServer 服务,当RegionServer节点宕机后重新进行规划;
    3)与Zookeeper通信,将自己的位置发布给Zookeeper

  3. HBase 从节点
    HBase从节点上启动HRegionServer服务,主要用于数据存储,其内部管理Region、Store、MemoStore、StoreFile、HFile等组件。主要包括以下功能:

    1. 负责HBase 数据存储;
    2. 刷新StoreFile文件到HDFS,并将小的HFile文件合并压缩为大HFile文件,大HFile文件超过阀值后进行分裂,生成新的Region和HFile文件;
      3)与主节点通信,将自身状态发送给主节点

HBase读流程

HBase 读数据的流程如下图所示:
在这里插入图片描述

  1. 客户端发送读取数据命令,连接zookeeper集群,获取hbase:meta 表所在的RegionServer地址;
  2. 连接meta表所在的RegionServer,根据meta表信息获取目标表的Region信息和所在RegionServer:
    1)当使用get命令,查询单条数据时,返回一个Region和RegionServe信息;
    2)当使用Scan扫描命令时,进行全表数据扫描,可能返回多个Region和RegionServer信息;
    3.连接目标表Region所在的RegionServer,返回查询数据,其中数据查询的顺序为:MemoStore->HDFS Block Cache-> Store File->HFile。查询后,会将数据缓存在Block Cache,以提高查询效率,但对Scan没有意义,因为其是全表扫描。

HBase写流程

HBase存储数据分为客户端和服务端两部分,服务端是异步完成数据存储。
客户端流程如下:

  1. 客户端发送存储数据命令,连接zookeeper集群,获取hbase:meta表所在的RegionServer地址;
  2. 连接meta表所在的RegionServer,根据meta表信息获取目标表的Region信息和所在的RegionServer;
  3. 连接目标表Region所在的RegionServer,向其中的Region 中的HLog写入数据,并根据不同的列族将数据写入到不同的Store 下的 MemoStore内存中,写入完成之后,客户端流程完成。
    服务端流程如下:
  4. 当客户端不断将数据写入MemoStore后,超过阀值(MemoStore内存128M/1h)后,触发flush刷新机制,最终将MemoStore内存数据刷入到HDFS 上,形成Store File 文件;
  5. 当Region中Store File文件越来越多,超过阈值(3个及以上)时,触发compact 合并机制,形成大的HFile文件;
  6. 随着Store File 文件合并,HFile文件越来越大,超过阈值(10G)时,触发split 分裂机制,将大的HFile文件一分为二,同时创建新的Region,管理新的HFile 文件,并将旧的Region和HFile文件下线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值