Hbase架构详解

一、简介

HBase 是一个分布式、面向列的存储系统,基于 Hadoop 的 HDFS。它模仿了 Google 的 BigTable 设计,主要用于存储海量结构化数据,支持实时读写。


二、核心组件

1. HMaster

  • 作用:HBase 的主服务器,负责管理 RegionServer,负载均衡、故障恢复、元数据管理等。
  • 功能
    • 分配 Region 给 RegionServer
    • 管理表的创建、删除、schema 变更
    • 监控 RegionServer 状态,进行故障转移

2. RegionServer

  • 作用:实际存储和处理数据的节点,负责读写请求。
  • 功能
    • 管理多个 Region
    • 处理客户端的读写请求
    • 执行数据的分裂和合并

3. Region

  • 作用:HBase 表的水平分片,每个 Region 存储表的部分数据。
  • 特点
    • 自动分裂(数据量大时自动拆分)
    • 由 RegionServer 管理

4. ZooKeeper

  • 作用:分布式协调服务,负责 HBase 的主备选举、节点状态监控、元数据存储等。
  • 功能
    • 保证高可用性
    • 协调 HMaster 和 RegionServer 的状态

5. HDFS

  • 作用:底层分布式文件系统,所有数据最终存储在 HDFS 上。

三、数据存储结构

1. 表(Table)

  • 由行(Row)和列族(Column Family)组成。

2. 行键(Row Key)

  • 唯一标识一行数据,按字典序排序。

3. 列族(Column Family)

  • 物理存储单元,表设计时确定。

4. 列限定符(Column Qualifier)

  • 列族下的具体列,可以动态添加。

5. 单元(Cell)

  • 三元组(Row Key, Column Family:Qualifier, Timestamp)唯一确定一个数据单元。

四、数据写入流程

  1. 客户端发起写请求
  2. RegionServer 接收请求
  3. 数据先写入 MemStore(内存)
  4. 同步写 WAL(Write Ahead Log,预写日志)
  5. MemStore 达到阈值后,flush 到 HFile(HDFS)
  6. HFile 按需合并(Compaction)

五、数据读取流程

  1. 客户端通过 ZooKeeper 获取 RegionServer 地址
  2. RegionServer 查询 MemStore 和 HFile
  3. 合并返回结果给客户端

六、元数据管理

  • .META. 表:记录每个 Region 的分布信息
  • ROOT 表(早期版本):记录 META 表的位置
  • 现在统一由 ZooKeeper 进行管理

七、容错与高可用

  • 多个 HMaster(主备机制)
  • RegionServer 自动重启和数据恢复
  • ZooKeeper 保证协调一致性

八、架构示意图

+----------------+         +------------------+
|   HMaster      | <-----> |    ZooKeeper     |
+----------------+         +------------------+
         |                          |
         v                          v
+----------------+         +------------------+
| RegionServer 1 |         | RegionServer 2   | ...
+----------------+         +------------------+
         |                          |
         v                          v
     [Region]                  [Region]
         |                          |
         v                          v
      [HFile]                   [HFile]
         |                          |
         v                          v
       [HDFS]                    [HDFS]

九、写入流程(详细)

  1. 客户端定位 RegionServer

    • 客户端首先需要确定要写入的 Row Key 属于哪个 Region,由哪个 RegionServer 管理。
    • 客户端通过 ZooKeeper 查询 META 表(或缓存)获取 RegionServer 地址。
  2. 写入 WAL(Write-Ahead Log)

    • 写入操作首先记录到 WAL(预写日志),WAL 是持久化日志文件,存储在 HDFS 上。
    • 这样即使 RegionServer 崩溃,重启后可以通过 WAL 恢复数据,保证数据不丢失。
  3. 写入 MemStore

    • 数据写入 WAL 后,同时写入 MemStore(内存中的数据结构,类似于内存表)。
    • MemStore 按行键排序,便于快速读取和后续刷盘。
  4. Flush 到 HFile

    • 当 MemStore 数据量达到阈值(如 128MB),会触发 flush 操作,将数据写入 HFile(HDFS 文件)。
    • flush 后 MemStore 清空,新的数据继续写入新的 MemStore。
  5. Compaction(合并)

    • 随着不断 flush,HFile 数量增多,会定期进行文件合并(Compaction),减少文件碎片,提高读取效率。
    • 分为 minor compaction(小合并)和 major compaction(大合并,会删除过期或被删除的数据)。

十、读取流程(详细)

  1. 客户端定位 RegionServer 和 Region

    • 客户端通过 ZooKeeper 或缓存定位数据所在的 RegionServer。
  2. RegionServer 读取数据

    • 首先在 MemStore 查找最新数据(因为 MemStore 可能有尚未刷盘的数据)。
    • 如果 MemStore 没有,则查询 HFile(存储在 HDFS 上)。
  3. 合并结果返回

    • 如果有多个版本,会根据时间戳合并,返回最新或指定版本的数据。
  4. BlockCache(块缓存)优化

    • RegionServer 有 BlockCache(块缓存),常用数据会缓存到内存,加速读取。

十一、Region 的分裂与合并

1. Region 分裂(Split)

  • 当某个 Region 数据量过大(如达到 10GB),会自动分裂为两个新的 Region。
  • 分裂时,HMaster 负责重新分配和元数据更新。
  • 分裂后的 Region 分别由一个或多个 RegionServer 管理,保证负载均衡。

2. Region 合并(Merge)

  • 如果某些 Region 数据量过小,可以合并为一个 Region,减少管理开销。
  • 合并操作由管理员或自动触发。

十二、Compaction(文件合并)

1. Minor Compaction

  • 合并少量小的 HFile,减少文件数量,提升读取性能。

2. Major Compaction

  • 合并所有 HFile,清理已删除和过期版本的数据,释放空间。

  • Compaction 优点

    • 提高数据读取效率
    • 清理无用数据
    • 减少 HFile 数量,降低 NameNode 压力

十三、高可用性与容错机制

1. HMaster 主备机制

  • 通常部署多个 HMaster(一个主,多个备),通过 ZooKeeper 选举主节点。
  • 主节点故障时,备节点自动接管,保证服务不中断。

2. RegionServer 容错

  • RegionServer 崩溃后,HMaster 检测到并将其管理的 Region 迁移到其他 RegionServer。
  • WAL 日志保证数据不丢失,RegionServer 重启或迁移时可恢复数据。

3. 数据可靠性

  • 所有数据最终存储在 HDFS,利用 HDFS 的副本机制(如 3 副本)保证数据安全。

十四、元数据管理

  • META 表:保存所有表的 Region 分布信息。
  • ZooKeeper:保存 HMaster、RegionServer 状态、META 表位置等,客户端通过 ZooKeeper 获取最新元数据。

十五、架构优势与适用场景

  • 优势

    • 高扩展性(可横向扩展到数百台服务器)
    • 高可用性(主备机制,数据多副本)
    • 实时读写(适合大数据场景)
    • 灵活的列式存储,适合稀疏数据
  • 适用场景

    • 海量日志存储
    • 实时分析
    • 用户画像、推荐系统
    • IoT 设备数据存储

十六、总结

HBase 架构是一个典型的主从分布式系统,利用 ZooKeeper 协调,底层依赖 HDFS,数据分片由 Region 管理,读写高效且支持高可用。适合存储大规模、稀疏数据,支持实时查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猩火燎猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值