大数据-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 获取元数据

  1. 定位到目标 RegionServer
  2. 读写操作先在 MemStore 完成
  3. 定期 flush 到 HFile 持久化存储

数据模型

详细的表格概念:

整体架构

ZooKeeper

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

  1. HMaster高可用实现:通过选举机制确保任何时候只有一个活跃的HMaster,当主HMaster失效时能快速选出新的主节点
  2. 元数据存储 :持久化存储关键的HBase元数据,包括:
    • -ROOT-表位置(HBase 0.96前)
    • hbase:meta表位置(存储所有Region的位置信息)
    • 集群配置信息
  3. 节点监控 :通过心跳机制监控HMaster和HRegionServer的状态
    • 实时检测节点失效(默认30秒超时)
    • 触发故障转移机制

HMaster

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

  1. Region分配与均衡
    • 新表创建时分配初始Region分布
    • 定期运行负载均衡算法(默认5分钟)
    • 处理RegionServer故障时的Region重新分配
  2. 元数据管理
    • 维护表结构信息(如列族配置)
    • 记录Region分裂历史
    • 协调DDL操作(如创建/删除表)
  3. 故障恢复
    • 通过ZooKeeper检测RegionServer失效
    • 将失效节点上的Region重新分配到健康节点
    • 处理WAL日志恢复(配合HLog)

HRegionServer

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

  1. Region管理
    • 托管多个Region(默认单个RS管理约100个Region)
    • 监控Region大小,触发自动分裂(当Region超过阈值时)
  2. 请求处理
    • 处理所有客户端读写请求(Put/Get/Scan等)
    • 管理BlockCache和MemStore
  3. 持久化机制
    • 定期将MemStore刷写为StoreFile(HFile)
    • 执行Minor/Major Compaction
    • 处理WAL日志持久化

Region

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

  1. 多Store架构
    • 每个列族对应一个独立的Store
    • 例如:用户表有"info"和"contact"两个列族 → 产生2个Store
  2. Store组成
    • MemStore :写缓存区(默认16MB)
      • 采用跳跃表数据结构实现快速写入
      • 触发flush的条件包括:大小阈值、时间间隔、手动触发等
    • StoreFile (HFile)
      • 实际存储数据的文件格式(基于HDFS)
      • 采用多层LSM树结构组织
      • 包含BloomFilter、索引块等优化结构
  3. Region分裂流程
    • 当Region达到阈值(默认10GB)
    • HRegionServer在原始Region目录创建.split文件
    • 执行原子性分裂操作
    • 向HMaster报告新Region信息
相关推荐
IT_陈寒1 天前
Redis 7.0的这个新特性让我处理百万级QPS轻松了50%,你可能还不知道!
前端·人工智能·后端
蓝-萧1 天前
【Java】如何使用jdbc连接并操作MySQL,一文读
java·后端
qianbailiulimeng1 天前
【MySQL】mysqldump使用方法
java·后端
梦里不知身是客111 天前
Spark介绍
大数据·分布式·spark
Victor3561 天前
Redis(102)Redis的单线程性能为什么这么高?
后端
啊吧怪不啊吧1 天前
SQL之表的查改(下)
大数据·数据库·sql
JaguarJack1 天前
PHP 现代特性速查 写出更简洁安全的代码(第一篇)
后端·php
Victor3561 天前
Redis(103)Redis的最大并发连接数是多少?
后端
猫猫姐姐1 天前
Flink基于Paimon的实时湖仓解决方案的演进
大数据·flink·湖仓一体