【尚硅谷】大数据技术之HBase – 带源码课件全套教程资源分享

封面图

📖 资源简介

最近有朋友问【尚硅谷】大数据技术之HBase – 带源码课件的学习资料,正好手头有一套比较完整的,就整理出来分享给大家。

✨ 资源亮点

  • 内容扎实:50节视频课程,跟着老师一步步操作,比自学摸索快得多。
  • 配套齐全:源码、课件、工具都打包好了(共1个压缩包),下载就能直接用。
  • 带源码课件:不是纯视频录像,配套的源代码和PPT都在,方便对照学习和二次修改。

📚 课程内容

课程大纲

课程按”入门 → Shell → 原理 → Java API → MR/Hive 集成 → 调优 → 项目实战”的主线组织,共 50 节视频:

  1. 视频

资源清单

类型 数量
视频教程 50 节
压缩文件 1 个
合计 51

深入理解 HBase:从原理到实战

为什么要学 HBase

在大数据体系里,HDFS 解决了”海量数据怎么存”,MapReduce/Spark 解决了”海量数据怎么算”,但它们都没有解决一个关键问题:当数据量涨到 PB 级、单机数据库根本扛不住时,如何对单行数据做到毫秒级随机读写? MySQL 分库分表有路由成本、扩容笨重,ES 更擅长检索而非高写入吞吐,而 HBase 正是为”写得进、查得出、扩得动“这三个目标设计的分布式 NoSQL 数据库。它底层跑在 HDFS 上,天然继承了 HDFS 的多副本容错与水平扩展能力,非常适合订单明细、用户画像、消息轨迹、物联网时序等”写入量大、按主键点查多”的场景。

HBase 与 RDBMS 的核心差异

对比项 RDBMS(MySQL 等) HBase
数据模型 面向行、固定 Schema 面向列族、Schema 稀疏
扩展方式 垂直扩展为主 水平扩展(Region 分裂)
主键查询 走 B+Tree 索引 RowKey 字典序 + Region 定位
事务 支持跨行 ACID 只保证单行行级事务
适合场景 强一致、复杂 Join、OLTP 海量写入、随机点查、宽表

一句话总结:HBase 不是用来替代 MySQL 的,而是用来承接 MySQL 扛不住的那部分超大规模写入与点查流量。

数据模型:理解五个核心概念

  • Table:逻辑上的表,物理上按 Region 切分。
  • Row Key:行的唯一标识,按字典序排序存储,是 HBase 唯一的”索引”。
  • Column Family(列族):列的物理分组,建表时必须显式声明,是存储和权限控制的最小单位。
  • Column Qualifier(列限定符):列族下的具体列,可以动态添加,不需要预先定义。
  • Cell(单元格):由 RowKey + Column Family + Column Qualifier + Timestamp 唯一定位的一个值,天然带版本。
RowKey: user-1001
├── info:name  → "Tom"        (timestamp=1700000001)
├── info:age   → "28"         (timestamp=1700000001)
└── order:20240101 → "199.00" (timestamp=1700000002)

架构:四大角色各司其职

  • HMaster:管理表与 Region 元数据(建表、删表、Region 分配),不参与实际数据读写。
  • RegionServer:真正干活的节点,负责 client 的读写请求,管理本地的 Region。
  • Region:表的横向切分单元,一张表初始可能只有 1 个 Region,数据涨上来后自动分裂。
  • ZooKeeper:存放 hbase:meta 元数据的入口、HMaster 选主、RegionServer 心跳。
  • HDFS:最终的文件存储层,HFile 落在 HDFS 上,天然三副本。

读写流程:HBase 的灵魂

写流程(课程第 12 节重点):

  1. Client 先查 ZooKeeper 拿到 hbase:meta,再定位到目标 RowKey 所在 Region 的 RegionServer。
  2. 写请求先顺序写 WAL(Write-Ahead Log),防止宕机丢数据。
  3. 再写入内存中的 MemStore(按列族一份),写完成即返回 ACK。
  4. 当 MemStore 达到阈值(默认 128MB),Flush 成一个 HFile 落 HDFS。

读流程(课程第 11 节重点):

  1. 先查 BlockCache(读缓存,LRU),命中直接返回。
  2. 再查 MemStore(内存里可能还有没 Flush 的新数据)。
  3. 最后到 HFile 中查找,依靠 HFile 顶层的 BlockIndex 快速定位。

这套”写 WAL + 写内存 + 顺序落盘”的设计,是 HBase 能做到高吞吐写入的根本原因。

RowKey 设计:决定你用得好不好

RowKey 是 HBase 唯一的索引,设计错了,整个集群都会被热点打穿。核心原则:

  1. 散列:避免时间戳、自增 ID 这类单调递增字段直接做 RowKey,否则所有写入都集中在最后一个 Region 上(热点问题)。常见做法是加盐(Salting)、哈希反转。
  2. 长度适中:RowKey 会被每个 HFile 索引、每个 Cell 重复存储,太长浪费空间,建议 10~100 字节。
  3. 预分区:建表时就按预估的 RowKey 区间切好 Region,避免初期单 Region 被打爆。
# 预分区:按十六进制前缀切 8 个 Region

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
create 'user', 'info', {NUMREGIONS => 8, SPLITALGO => 'HexStringSplit'}

Shell 常用命令速查

# 建表:列族 info

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
create 'user', 'info'

# 写入:行键 row1,列族 info,列名 name

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
put 'user', 'row1', 'info:name', 'Tom'
put 'user', 'row1', 'info:age', '28'

# 按行键精确查

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
get 'user', 'row1'

# 扫描整表(生产环境慎用,建议加 STARTROW/STOPROW 或 Filter)

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
scan 'user', {LIMIT => 10}

# 删除某个列

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
delete 'user', 'row1', 'info:age'

# 删表必须先 disable

![封面图](https://www.suyouke.com/wp-content/uploads/2026/09/doubao_img_010_20260922_113350-7.png)
disable 'user'
drop 'user'

Java API 最小示例

Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "zk1:2181,zk2:2181");

try (Connection conn = ConnectionFactory.createConnection(conf);
     Table table = conn.getTable(TableName.valueOf("user"))) {

    Put put = new Put(Bytes.toBytes("row1"));
    put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("Tom"));
    table.put(put);

    Get get = new Get(Bytes.toBytes("row1"));
    Result result = table.get(get);
    String name = Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")));
    System.out.println("name = " + name);
}

Compaction 与 Region 分裂

  • Minor Compaction:把相邻的若干小 HFile 合并成一个,减轻读放大,速度快、不停机。
  • Major Compaction:把一个 Region 下一个列族的所有 HFile 合并成一个,同时清理被标记删除的 Cell,资源消耗大,通常放在凌晨调度。
  • Region 分裂:当 Region 大小超过 hbase.hregion.max.filesize(默认 10GB),自动按中间 RowKey 一分为二,HMaster 把新 Region 迁移到其他 RegionServer 实现负载均衡。

与 Hive / Spark 集成

课程后半段讲的 Hive × HBase 集成非常实用:在 Hive 中建一张外部表映射到 HBase 表,就能用 Hive SQL 直接分析 HBase 里的海量数据,弥补 HBase 不擅长复杂分析的短板。生产上常见分工是:HBase 扛在线点查,Spark/Hive 扛离线批量分析,两边通过 HDFS 上的公共存储交换数据。

学习路线与章节导读

按课程大纲,可以分成五个阶段循序渐进:

阶段 对应节次 学习目标
入门 01~06 理解 HBase 定位、架构,完成单机/伪分布式安装
操作 07~14 熟练 Shell,吃透数据模型与读写原理
API 15~22 能用 Java 完成建表、增删改查、扫描
集成 23~32 MR 读写 HBase、Hive 映射外部表
调优+实战 33~50 高可用、预分区、RowKey 设计、谷粒微博项目

高频面试要点

  1. HBase 为什么写入快? 因为写 WAL + 写 MemStore 是内存操作,真正落 HFile 是顺序写,比随机写快几个数量级。
  2. 什么是 HBase 的热点问题?怎么解决? 自增 RowKey 导致新数据全打到最后一个 Region;用盐值、哈希、反转、预分区打散。
  3. Flush、Compact、Split 分别是什么? MemStore 写满刷成 HFile 叫 Flush;HFile 合并叫 Compact;Region 过大拆分叫 Split。
  4. HBase 适合存图片吗? 不适合,小文件问题严重,图片应放 HDFS/HDFS 类对象存储,HBase 只存元数据。

常见踩坑与最佳实践

  • RowKey 不要用时间戳开头:会造成写入热点,常见做法是”用户ID哈希 + 时间戳”。
  • 列族数量越少越好:官方建议不超过 2~3 个,每个列族 MemStore 独立,列族多了会有很多小 MemStore 反复 Flush。
  • 生产环境开 Snappy 压缩:比 GZ 快、压缩率够用,CPU 开销小。
  • scan 必须带 Filter 或起止行:全表 scan 在百亿级表上是灾难。

总结

HBase 的学习曲线是”入门容易精通难”:Shell 操作半天就能上手,但真正把 RowKey、预分区、Compaction、Region 分裂调到生产可用,需要反复看源码和踩坑。这套尚硅谷课程的价值在于把架构原理(读写流程、Flush/Compact)和项目实战(谷粒微博)串起来了,建议跟着视频把谷粒微博从头做一遍——关注、粉丝、时间线这几个表的 RowKey 设计,是检验你是否真懂 HBase 的最好试金石。

📁 目录结构

📋 点击展开查看课程模块大纲
[V2]【尚硅谷】大数据技术之HBase - 带源码课件/
├── 入门篇(01~06):课程介绍 / HBase 特点与架构 / 角色介绍 / 安装配置启动
├── Shell 篇(07~09):增查改删操作
├── 原理篇(10~14):数据结构 / 读写流程 / Flush & Compact 参数
├── Java API 篇(15~22):新旧 API / 建表删表 / 增删改查 / 全表扫描 / 指定列族查询
├── MR 集成篇(23~28):官方案例 / 自定义 Mapper & Reducer & Driver / 打包测试
├── Hive 集成篇(29~32):Hive 与 HBase 对比 / 集成需求一、二
├── 调优篇(33~36):高可用 / 预分区 / RowKey 设计 / 内存与基础优化
├── 项目实战:谷粒微博(37~50):需求分析 / 命名空间 / 建表 / 发微博 / 关注取关 / 版本修复 / 过滤器 / 页面初始化 / 测试
└── 课件.zip

资源获取

💡 建议:尽快保存到本地网盘或电脑,避免分享链接后期失效。


整理不易,如果对你有帮助,欢迎分享给更多需要的朋友。

【尚硅谷】大数据技术之HBase - 带源码课件全套教程资源分享-速优课
【尚硅谷】大数据技术之HBase – 带源码课件全套教程资源分享
此内容为付费阅读,请付费后查看
¥2
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费阅读
© 版权声明
THE END
喜欢就支持一下吧
点赞10
相关推荐
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容

温馨提示:
1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!