点一下关注吧!!!非常感谢!!持续更新!!!
🚀 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. 弹性扩展能力
扩展过程简单高效:
- 新节点加入 Hadoop 集群
- 自动平衡数据分布
- 无需停机,业务无感知
- 理论上可以无限扩展
4. 高并发访问
性能特点:
- 支持每秒数万次的读写操作
- 读写延迟通常在毫秒级别
- 通过 RegionServer 分布式处理请求
5. 稀疏数据存储
灵活性表现:
- 每行可以有不同的列组合
- 允许动态增加新列
- 空列不占用存储资源
- 适合半结构化数据存储
6. 多版本数据管理
版本控制机制:
- 每个单元格(Cell)可以保存多个版本
- 默认使用时间戳作为版本号
- 可配置保留的版本数量
- 示例:可以查询某个键值在特定时间点的状态
7. 统一的数据类型
数据存储特点:
- 所有数据转换为字节数组(byte[])存储
- 应用程序负责类型转换
- 简化了存储引擎的设计
- 提高了存储效率
项目应用场景
交通领域
典型应用案例:
- 船舶/车辆 GPS 轨迹数据存储
- 每天采集上千万条位置记录
- 需要长期保存历史数据
- 实时查询特定车辆的最新位置
- 高速公路收费系统
- 共享单车位置管理
金融领域
常见使用场景:
- 用户交易记录存储
- 保存每笔交易的详细信息
- 支持反欺诈分析
- 满足监管审计要求
- 信用卡消费记录
- 风险控制数据
电商领域
核心应用:
- 用户行为分析
- 存储页面浏览、点击、搜索等事件
- 支持用户画像构建
- 典型数据量:日均数亿条记录
- 订单交易系统
- 商品库存管理
电信领域
主要应用:
- 通话详单(CDR)存储
- 每通电话的详细信息
- 需要保存6个月以上
- 支持话单查询与分析
- 基站日志记录
- 用户上网行为数据
公司实践
- 阿里巴巴:商品画像系统、搜索推荐系统中大量使用。
- 滴滴:行程数据存储、司机轨迹日志。
- 美团:用户行为数据和广告点击数据分析。
- 京东:实时订单行为数据存储与处理。
- 银行金融机构:用于日志追踪、交易数据审计、风控数据建模。
不适合场景
- 复杂事务操作(如跨行事务):HBase 只保证单行事务
- 实时低延迟查询(如毫秒级并发查询接口):需要结合缓存(如Redis)使用
- 结构固定、小数据量系统:使用 MySQL、PostgreSQL 更合适
- 二维关系型 JOIN 多表查询:不支持 SQL JOIN,需要手动实现
技术实现补充
HBase 的架构关键组件:
- HMaster:负责元数据管理和负载均衡
- RegionServer:处理实际读写请求
- ZooKeeper:协调集群状态
- HDFS:提供底层存储
数据访问流程示例: 5. 客户端连接 ZooKeeper 获取元数据
- 定位到目标 RegionServer
- 读写操作先在 MemStore 完成
- 定期 flush 到 HFile 持久化存储
数据模型

详细的表格概念:
整体架构

ZooKeeper
ZooKeeper在HBase架构中扮演着关键角色。它通过以下方式确保系统的高可用性和可靠性:
- HMaster高可用实现:通过选举机制确保任何时候只有一个活跃的HMaster,当主HMaster失效时能快速选出新的主节点
- 元数据存储 :持久化存储关键的HBase元数据,包括:
-ROOT-
表位置(HBase 0.96前)hbase:meta
表位置(存储所有Region的位置信息)- 集群配置信息
- 节点监控 :通过心跳机制监控HMaster和HRegionServer的状态
- 实时检测节点失效(默认30秒超时)
- 触发故障转移机制
HMaster
作为集群的管理节点,HMaster主要承担以下职责:
- Region分配与均衡
- 新表创建时分配初始Region分布
- 定期运行负载均衡算法(默认5分钟)
- 处理RegionServer故障时的Region重新分配
- 元数据管理
- 维护表结构信息(如列族配置)
- 记录Region分裂历史
- 协调DDL操作(如创建/删除表)
- 故障恢复
- 通过ZooKeeper检测RegionServer失效
- 将失效节点上的Region重新分配到健康节点
- 处理WAL日志恢复(配合HLog)
HRegionServer
作为数据服务节点,每个HRegionServer通常运行在集群的每台数据节点上,主要功能包括:
- Region管理
- 托管多个Region(默认单个RS管理约100个Region)
- 监控Region大小,触发自动分裂(当Region超过阈值时)
- 请求处理
- 处理所有客户端读写请求(Put/Get/Scan等)
- 管理BlockCache和MemStore
- 持久化机制
- 定期将MemStore刷写为StoreFile(HFile)
- 执行Minor/Major Compaction
- 处理WAL日志持久化
Region
作为数据存储的基本单元,Region具有以下详细结构:
- 多Store架构
- 每个列族对应一个独立的Store
- 例如:用户表有"info"和"contact"两个列族 → 产生2个Store
- Store组成
- MemStore :写缓存区(默认16MB)
- 采用跳跃表数据结构实现快速写入
- 触发flush的条件包括:大小阈值、时间间隔、手动触发等
- StoreFile (HFile)
- 实际存储数据的文件格式(基于HDFS)
- 采用多层LSM树结构组织
- 包含BloomFilter、索引块等优化结构
- MemStore :写缓存区(默认16MB)
- Region分裂流程
- 当Region达到阈值(默认10GB)
- HRegionServer在原始Region目录创建.split文件
- 执行原子性分裂操作
- 向HMaster报告新Region信息
