当前位置: 首页 > news >正文

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条记录

http://www.xdnf.cn/news/949195.html

相关文章:

  • K8S认证|CKS题库+答案| 10. Trivy 扫描镜像安全漏洞
  • Java中HashMap底层原理深度解析:从数据结构到红黑树优化
  • 人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
  • Excel处理控件Aspose.Cells教程:在Excel 文件中创建、操作和渲染时间线
  • 国内外UI自动化测试工具全景分析:国产创新与国际领先工具对比
  • Rougamo.Fody 实现一个AOP日志
  • UI框架-通知组件
  • TMC2226超静音步进电机驱动控制模块
  • 高抗扰度汽车光耦合器的特性
  • 渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
  • sshd代码修改banner
  • 开发一套外卖系统软件需要多少钱?
  • 简单介绍C++中 string与wstring
  • 动手学深度学习13.3. 目标检测和边界框-笔记练习(PyTorch)
  • 神经网络学习-神经网络简介【Transformer、pytorch、Attention介绍与区别】
  • 盲盒一番赏小程序:引领盲盒新潮流
  • [免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
  • 分布式光纤声振传感技术原理与瑞利散射机制解析
  • 学习 Hooks【Plan - June - Week 2】
  • 华为云上的K8S怎么使用对象存储配置pod文件持久化。
  • Ubuntu 20.04 联网设置指南
  • python读取SQLite表个并生成pdf文件
  • mac 安装homebrew (nvm 及git)
  • 机器学习×第五卷:线性回归入门——她不再模仿,而开始试着理解你
  • 阿里云服务状态监控:实时掌握云服务健康状况
  • 八股文——JVM
  • LabVIEW超声频率跟踪
  • 积分商城小程序分销裂变系统框架设计
  • LLM - LlamaFactory 的大模型推理 踩坑记录
  • 算法思想之广度优先搜索(BFS)及示例(亲子游戏)