写点什么

大数据 -33 HBase 整体架构 HMaster HRegion

作者:武子康
  • 2025-07-07
    美国
  • 本文字数:3775 字

    阅读完需:约 12 分钟

大数据-33 HBase 整体架构 HMaster HRegion

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI 篇持续更新中!(长期更新)

AI 炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究,持续打造实用 AI 工具指南!📐🤖

💻 Java 篇正式开启!(300 篇)

目前 2025 年 07 月 07 日更新到:Java-65 深入浅出 分布式服务 网络通信 BIO NIO AIO 详解 附代码 MyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务正在更新!深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300 篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解


背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个 Hadoop 的学习环境,供我学习。


  • 2C4G 编号 h121

  • 2C4G 编号 h122

  • 2C2G 编号 h123


HBase 项目详细介绍

项目简介

HBase (Hadoop Database) 是一款基于 Google 的 BigTable 论文设计而来的开源分布式数据库系统。它属于列式存储的非关系型数据库(NoSQL),专门用于处理超大规模数据集的实时随机读写需求。


与传统的关系型数据库如 MySQL 相比,HBase 采用了完全不同的存储方式:


  • 行式存储 vs 列式存储:MySQL 采用行式存储,即使某些字段为空也会占用存储空间;而 HBase 采用列式存储,空字段不会浪费空间

  • 存储容量:MySQL 单表通常限制在百万到千万级数据,而 HBase 可以轻松存储 PB 级数据

  • 扩展方式:MySQL 主要通过垂直扩展(升级硬件),HBase 则支持水平扩展(增加节点)

核心特性

海量数据存储能力

  • 支持 PB 级别大数据存储,单集群可存储超过 100TB 至 PB 级数据

  • 采用分布式存储架构,数据自动分片存储在多个数据节点

  • 支持数据压缩存储,可节省 50%以上的存储空间

  • 典型应用场景:互联网用户行为日志、物联网传感器数据、金融交易记录等海量数据存储

高可用与横向扩展

  • 采用主从架构,RegionServer 作为数据节点可动态扩展

  • 支持在线添加节点,扩容过程不影响业务运行

  • 理论上可以实现存储容量和计算能力的线性增长

  • 每个 RegionServer 管理多个 Region(数据分区),自动负载均衡

  • 典型配置:初始 3 节点,可扩展至上百节点处理 PB 级数据

列族存储

  • 数据按列族(Column Family)物理存储,同列族数据集中存放

  • 适合宽表场景,如用户画像表可能有上千个字段

  • 单条记录只需存储实际有值的列,极大节省存储空间

  • 列族可单独配置压缩算法、过期时间等属性

  • 示例:用户表可设基础信息、行为数据、偏好设置等不同列族

强一致性

  • 提供行级 ACID 事务保证

  • 支持跨行事务,确保相关操作同时成功或失败

  • 采用 MVCC(多版本并发控制)实现读写不阻塞

  • WAL(预写日志)确保数据持久性

  • 典型应用:金融转账、库存管理等需要强一致性的场景

快速随机读写

  • 多层存储结构:MemStore(内存)+HFile(磁盘)+BlockCache(缓存)

  • 热数据优先缓存在内存,响应时间通常<10ms

  • 支持批量写入和异步刷新机制

  • BloomFilter 加速查询,避免无效磁盘 IO

  • 典型性能:单节点每秒可处理数万次读写操作 ## 核心特性

海量数据存储能力

  • 支持 PB 级别大数据存储,单集群可存储超过 100TB 至 PB 级数据

  • 采用分布式存储架构,数据自动分片存储在多个数据节点

  • 支持数据压缩存储,可节省 50%以上的存储空间

  • 典型应用场景:互联网用户行为日志、物联网传感器数据、金融交易记录等海量数据存储

高可用与横向扩展

  • 采用主从架构,RegionServer 作为数据节点可动态扩展

  • 支持在线添加节点,扩容过程不影响业务运行

  • 理论上可以实现存储容量和计算能力的线性增长

  • 每个 RegionServer 管理多个 Region(数据分区),自动负载均衡

  • 典型配置:初始 3 节点,可扩展至上百节点处理 PB 级数据

列族存储

  • 数据按列族(Column Family)物理存储,同列族数据集中存放

  • 适合宽表场景,如用户画像表可能有上千个字段

  • 单条记录只需存储实际有值的列,极大节省存储空间

  • 列族可单独配置压缩算法、过期时间等属性

  • 示例:用户表可设基础信息、行为数据、偏好设置等不同列族

强一致性

  • 提供行级 ACID 事务保证

  • 支持跨行事务,确保相关操作同时成功或失败

  • 采用 MVCC(多版本并发控制)实现读写不阻塞

  • WAL(预写日志)确保数据持久性

  • 典型应用:金融转账、库存管理等需要强一致性的场景

快速随机读写

  • 多层存储结构:MemStore(内存)+HFile(磁盘)+BlockCache(缓存)

  • 热数据优先缓存在内存,响应时间通常<10ms

  • 支持批量写入和异步刷新机制

  • BloomFilter 加速查询,避免无效磁盘 IO

  • 典型性能:单节点每秒可处理数万次读写操作

项目优点详解

1. 海量存储能力

HBase 底层基于 Hadoop 分布式文件系统(HDFS)实现存储:


  • 单个集群可存储 PB 级数据

  • 数据自动分片存储在不同节点

  • 示例:一个 10 节点的 HBase 集群可存储超过 100TB 数据

2. 高效的列式存储

列式存储的具体实现方式:


  • 数据按列族(Column Family)组织,每个列族包含多个列(Column)

  • 列族在创建表时定义,列可以动态添加

  • 存储格式示例:


  RowKey | CF1:Col1 | CF1:Col2 | CF2:Col1 | CF2:Col2  ------ | -------- | -------- | -------- | --------  row1   | valueA   | valueB   | valueC   | (null)
复制代码


其中空值(null)不占用存储空间

3. 弹性扩展能力

扩展过程简单高效:


  1. 新节点加入 Hadoop 集群

  2. 自动平衡数据分布

  3. 无需停机,业务无感知

  4. 理论上可以无限扩展

4. 高并发访问

性能特点:


  • 支持每秒数万次的读写操作

  • 读写延迟通常在毫秒级别

  • 通过 RegionServer 分布式处理请求

5. 稀疏数据存储

灵活性表现:


  • 每行可以有不同的列组合

  • 允许动态增加新列

  • 空列不占用存储资源

  • 适合半结构化数据存储

6. 多版本数据管理

版本控制机制:


  • 每个单元格(Cell)可以保存多个版本

  • 默认使用时间戳作为版本号

  • 可配置保留的版本数量

  • 示例:可以查询某个键值在特定时间点的状态

7. 统一的数据类型

数据存储特点:


  • 所有数据转换为字节数组(byte[])存储

  • 应用程序负责类型转换

  • 简化了存储引擎的设计

  • 提高了存储效率

项目应用场景

交通领域

典型应用案例:


  • 船舶/车辆 GPS 轨迹数据存储

  • 每天采集上千万条位置记录

  • 需要长期保存历史数据

  • 实时查询特定车辆的最新位置

  • 高速公路收费系统

  • 共享单车位置管理

金融领域

常见使用场景:


  • 用户交易记录存储

  • 保存每笔交易的详细信息

  • 支持反欺诈分析

  • 满足监管审计要求

  • 信用卡消费记录

  • 风险控制数据

电商领域

核心应用:


  • 用户行为分析

  • 存储页面浏览、点击、搜索等事件

  • 支持用户画像构建

  • 典型数据量:日均数亿条记录

  • 订单交易系统

  • 商品库存管理

电信领域

主要应用:


  • 通话详单(CDR)存储

  • 每通电话的详细信息

  • 需要保存 6 个月以上

  • 支持话单查询与分析

  • 基站日志记录

  • 用户上网行为数据

公司实践

  • 阿里巴巴:商品画像系统、搜索推荐系统中大量使用。

  • 滴滴:行程数据存储、司机轨迹日志。

  • 美团:用户行为数据和广告点击数据分析。

  • 京东:实时订单行为数据存储与处理。

  • 银行金融机构:用于日志追踪、交易数据审计、风控数据建模。

不适合场景

  • 复杂事务操作(如跨行事务):HBase 只保证单行事务

  • 实时低延迟查询(如毫秒级并发查询接口):需要结合缓存(如 Redis)使用

  • 结构固定、小数据量系统:使用 MySQL、PostgreSQL 更合适

  • 二维关系型 JOIN 多表查询:不支持 SQL JOIN,需要手动实现

技术实现补充

HBase 的架构关键组件:


  1. HMaster:负责元数据管理和负载均衡

  2. RegionServer:处理实际读写请求

  3. ZooKeeper:协调集群状态

  4. HDFS:提供底层存储


数据访问流程示例:5. 客户端连接 ZooKeeper 获取元数据 6. 定位到目标 RegionServer7. 读写操作先在 MemStore 完成 8. 定期 flush 到 HFile 持久化存储

数据模型


详细的表格概念:


整体架构

ZooKeeper

ZooKeeper 在 HBase 架构中扮演着关键角色。它通过以下方式确保系统的高可用性和可靠性:


  1. HMaster 高可用实现:通过选举机制确保任何时候只有一个活跃的 HMaster,当主 HMaster 失效时能快速选出新的主节点

  2. 元数据存储:持久化存储关键的 HBase 元数据,包括:

  3. -ROOT-表位置(HBase 0.96 前)

  4. hbase:meta表位置(存储所有 Region 的位置信息)

  5. 集群配置信息

  6. 节点监控:通过心跳机制监控 HMaster 和 HRegionServer 的状态

  7. 实时检测节点失效(默认 30 秒超时)

  8. 触发故障转移机制

HMaster

作为集群的管理节点,HMaster 主要承担以下职责:


  1. Region 分配与均衡

  2. 新表创建时分配初始 Region 分布

  3. 定期运行负载均衡算法(默认 5 分钟)

  4. 处理 RegionServer 故障时的 Region 重新分配

  5. 元数据管理

  6. 维护表结构信息(如列族配置)

  7. 记录 Region 分裂历史

  8. 协调 DDL 操作(如创建/删除表)

  9. 故障恢复

  10. 通过 ZooKeeper 检测 RegionServer 失效

  11. 将失效节点上的 Region 重新分配到健康节点

  12. 处理 WAL 日志恢复(配合 HLog)

HRegionServer

作为数据服务节点,每个 HRegionServer 通常运行在集群的每台数据节点上,主要功能包括:


  1. Region 管理

  2. 托管多个 Region(默认单个 RS 管理约 100 个 Region)

  3. 监控 Region 大小,触发自动分裂(当 Region 超过阈值时)

  4. 请求处理

  5. 处理所有客户端读写请求(Put/Get/Scan 等)

  6. 管理 BlockCache 和 MemStore

  7. 持久化机制

  8. 定期将 MemStore 刷写为 StoreFile(HFile)

  9. 执行 Minor/Major Compaction

  10. 处理 WAL 日志持久化

Region

作为数据存储的基本单元,Region 具有以下详细结构:


  1. 多 Store 架构

  2. 每个列族对应一个独立的 Store

  3. 例如:用户表有"info"和"contact"两个列族 → 产生 2 个 Store

  4. Store 组成

  5. MemStore:写缓存区(默认 16MB)

  6. 采用跳跃表数据结构实现快速写入

  7. 触发 flush 的条件包括:大小阈值、时间间隔、手动触发等

  8. StoreFile(HFile)

  9. 实际存储数据的文件格式(基于 HDFS)

  10. 采用多层 LSM 树结构组织

  11. 包含 BloomFilter、索引块等优化结构

  12. Region 分裂流程

  13. 当 Region 达到阈值(默认 10GB)

  14. HRegionServer 在原始 Region 目录创建.split 文件

  15. 执行原子性分裂操作

  16. 向 HMaster 报告新 Region 信息



发布于: 2025-07-07阅读数: 2
用户头像

武子康

关注

永远好奇 无限进步 2019-04-14 加入

Hi, I'm Zikang,好奇心驱动的探索者 | INTJ / INFJ 我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。 坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。

评论

发布
暂无评论
大数据-33 HBase 整体架构 HMaster HRegion_Java_武子康_InfoQ写作社区