HBase学习:通俗易懂的实例解析

1. 数据模型:Excel表格类比

HBase的数据结构就像一个无限扩展的Excel表格:

  • 行键(Row Key):相当于Excel第一列的序号(如A001,A002),是唯一标识

  • 列族(Column Family):相当于Excel的工作表标签(如"基本信息"、"交易记录")

  • 列限定符(Column Qualifier):相当于每个工作表中的具体列(如"姓名"、"年龄")

  • 版本(Version):相当于Excel的"撤销历史",记录数据变更过程

例子:存储学生信息表

Row Key: S1001

基本信息:姓名 -> 张三

基本信息:年龄 -> 20

成绩记录:数学 -> 90 (2023-01-01)

成绩记录:数学 -> 85 (2023-06-01)

2. 存储架构:图书馆类比

HBase的存储架构就像大型图书馆:

  • Region:相当于图书馆的不同楼层(3楼科技类,4楼文学类)

  • RegionServer:相当于每层的管理员

  • HMaster:相当于图书馆总馆长

  • HDFS:相当于图书馆的书架和存储空间

例子:学生数据按学号范围分区

  • Region1: S0001-S5000 (1号管理员负责)

  • Region2: S5001-S9999 (2号管理员负责)

3. 读写流程:外卖订餐类比

  • 写数据:像下单外卖

    1. 客户(Client)下单(写入请求)

    2. 餐厅(HRegionServer)接单并记录到小票(WAL)

    3. 厨师(MemStore)开始备餐

    4. 备好的餐(数据)暂时放保温箱(MemStore)

    5. 保温箱满了就打包成便当(HFile)存入冰箱(HDFS)

  • 读数据:像取外卖

    1. 先看保温箱(MemStore)里有没有

    2. 没有再去冰箱(HFile)里找

    3. 把找到的菜品(数据)合并后返回

4. compaction:垃圾回收类比

就像小区的垃圾回收:

  • Minor Compaction:每天收家门口的垃圾(小文件合并)

  • Major Compaction:每月大扫除,彻底清理(删除标记数据)

例子:存储的学生成绩有多次更新

数学: 90 (版本3) ← 最新

数学: 85 (版本2)

数学: 80 (版本1) ← 被回收

5. Bloom Filter:快递柜验证码

就像快递柜的取件码:

  • 输入手机号(Bloom Filter检查)

  • 系统快速告诉你"可能有快递"(数据可能存在)

  • 但不会告诉你具体在哪个柜子(避免全表扫描)

例子:查询学号S1005是否存在,Bloom Filter快速判断

  • 返回"可能存在" → 继续精确查找

  • 返回"肯定不存在" → 直接结束查询

6. 行锁:超市储物柜类比

就像超市的电子储物柜:

  • 你存入物品(修改行数据)时会锁定该柜子(行锁)

  • 其他人必须等你用完(释放锁)才能使用

  • 防止多人同时修改造成数据混乱

例子:两个老师同时要修改S1001的成绩

  • 老师A先获得锁,完成修改

  • 老师B必须等待,直到老师A释放锁

7. 预写日志(WAL):飞机黑匣子

就像飞机的黑匣子:

  • 所有操作先记录到WAL(黑匣子)

  • 即使系统崩溃(空难)

  • 也能根据WAL恢复数据(事故分析)

例子:正在录入100个新学生数据时断电

  • 已完成的80条记录在WAL中

  • 重启后可以从WAL恢复这80条记录