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 进行增量备份
- 支持跨集群复制