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. 读写流程:外卖订餐类比
-
写数据:像下单外卖
-
客户(Client)下单(写入请求)
-
餐厅(HRegionServer)接单并记录到小票(WAL)
-
厨师(MemStore)开始备餐
-
备好的餐(数据)暂时放保温箱(MemStore)
-
保温箱满了就打包成便当(HFile)存入冰箱(HDFS)
-
-
读数据:像取外卖
-
先看保温箱(MemStore)里有没有
-
没有再去冰箱(HFile)里找
-
把找到的菜品(数据)合并后返回
-
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条记录