Skip to content

HBase 架构

HBase 是一个分布式、可扩展的列式数据库,适用于实时随机读写大规模数据。

概述

HBase 采用主从架构,具有高可用性和强一致性的特点。

架构组成

HMaster

HMaster 是 HBase 的主节点:

  • 管理集群的元数据
  • 管理 RegionServer
  • 处理 Region 分裂和合并
  • 协调故障恢复

RegionServer

RegionServer 是 HBase 的从节点:

  • 管理多个 Region
  • 处理数据读写请求
  • 执行 Compact 和 Flush 操作
  • 向 HMaster 汇报状态

ZooKeeper

ZooKeeper 用于协调集群状态:

  • 选举主节点
  • 存储元数据位置
  • 监控集群状态

数据模型

表结构

Table
├── Row Key (行键)
│   ├── Column Family 1
│   │   ├── Qualifier 1: Value 1 (Timestamp)
│   │   └── Qualifier 2: Value 2 (Timestamp)
│   └── Column Family 2
│       └── Qualifier 3: Value 3 (Timestamp)

核心概念

  • Table: 表
  • Row Key: 行键
  • Column Family: 列族
  • Column Qualifier: 列限定符
  • Timestamp: 时间戳
  • Cell: 单元格

Region

Region 划分

HBase 将表划分为多个 Region:

  • 每个 Region 包含一定范围的行键
  • Region 大小达到阈值时自动分裂
  • Region 可以在不同 RegionServer 之间迁移

Region 状态

  • Online: 正常服务
  • Offline: 离线状态
  • Splitting: 正在分裂
  • Merging: 正在合并

存储架构

MemStore

MemStore 是内存中的数据存储:

  • 写入数据首先进入 MemStore
  • MemStore 达到阈值后触发 Flush
  • Flush 将数据写入 HFile

HFile

HFile 是磁盘上的数据文件:

  • 采用 LSM-Tree 结构
  • 支持高效的随机读写
  • 定期进行 Compact 操作

WAL

WAL(Write-Ahead Log)用于保证数据安全:

  • 写入 MemStore 前先写入 WAL
  • WAL 保证数据不丢失
  • WAL 可以配置为异步写入

一致性模型

强一致性

HBase 保证单行的强一致性:

  • 写入操作在返回前已持久化
  • 读取操作返回最新数据

最终一致性

跨 Region 的操作可能存在最终一致性:

  • 不同 RegionServer 之间的数据同步
  • 使用分布式锁保证一致性

高可用性

故障恢复

HBase 自动处理 RegionServer 故障:

  • ZooKeeper 检测故障
  • HMaster 重新分配 Region
  • 从 WAL 恢复数据

备份机制

  • 定期备份 HFile
  • 使用 DistCp 进行增量备份
  • 支持跨集群复制