HBase组件概述
更新时间 2026-10-12 11:42:28
最近更新时间: 2026-10-12 11:42:28
本章节介绍HBase服务基础概述。
什么是 HBase
HBase 不是一个传统的关系型数据库,它的设计目标是:当数据量大到单机放不下、或者读写并发高到单机扛不住时,把数据按"行"切分到多台机器上,仍然能像访问一张表一样快速读写。它适合以下场景:
1、写多读少、需要高吞吐写入的时序数据(如监控指标、日志、物联网设备上报数据)。
2、需要随机、实时点查的大规模明细数据(如用户画像、订单流水、消息记录)。
3、数据量大且会持续增长的业务,希望存储能随集群扩容线性增长。
注意
HBase 不支持复杂关联查询(Join)和事务跨行事务。如果业务强依赖 SQL 关联分析,请结合 Hive、Spark 等计算组件使用,或参考对应组件的 SQL 能力文档。
核心架构
一个 HBase 集群通常由三类角色协同工作,它们都运行在翼MR的节点上
| 角色 | 职责 |
|---|---|
| HMaster | 集群的"调度中心",负责表的管理、Region 的分配与均衡、故障转移。通常部署主备两个实例避免单点。 |
| RegionServer | 数据的"存储与读写节点",真正负责表的 Region 数据存储、读写请求处理与 Compaction。可水平扩展多个。 |
| ZooKeeper | 集群的"协调者",保存元数据与状态、参与主备选举、维护客户端寻址。HBase 强依赖 ZooKeeper。 |
| HDFS | 底层的分布式文件系统,HBase 的数据最终落地在 HDFS 上,由 HDFS 提供副本与容错。 |
数据在 RegionServer 上按"表 → Region → 列族 Store"的层级组织;当某个 Region 过大时会被自动拆分,从而把负载分散到更多节点。
数据模型
理解下面几个概念,有助于您正确地建表和读写:
| 概念 | 说明 |
|---|---|
| 表(Table) | 数据的顶层容器,按行键(RowKey)排序存储。 |
| 行键(RowKey) | 每一行的唯一标识,按字典序排列,是 HBase 的唯一索引,直接决定读写性能。 |
| 列族(Column Family) | 列的集合,建表时固定。同一列族的数据物理上存储在一起,权限、压缩、TTL 等都按列族设置。 |
| 列限定符(Qualifier) | 列族下的具体列,无需提前定义,可动态增加。完整列名为"列族:限定符"。 |
| 单元格(Cell) | 由行键、列族、限定符、时间戳共同定位的一个值;HBase 同一坐标可保存多个版本。 |
| 时间戳(Timestamp) | 单元格的版本号,默认取写入时间,可用于保留数据的历史版本。 |