表物理存储模型

文章插图
HBase表中的数据被拆分成不同的区域块(Region),每个区域块按一定规则分发到集群中不同的RegionServer上 。通过这种把大表中数据打散到集群节点存储的方式来实现大数据宽表的线性扩展能力 。
架构

文章插图
上图Hbase总体架构图,包含了HMaster、HRegionServer、HRegion、Hlog、Store、MEMStore等逻辑结构划分 。HBase以HDFS作为底层存储框架,通过DFS Client进行文件操作 。HMaster负责把HRegion分配给HRegionServer 。一个HRegionServer包含多个HRegion 。HRegionServer中的多个Region共享一个HLog,HLog用来做灾备恢复 。一个Region由一个或多个store组成,一个store对应表中的一个列族,每个store包含memStore和其对应的一个或多个StoreFile 。StoreFile是HFile的轻量封装,HFile是HDFS中的文件存储格式,MemStore放在内存中 。
- Client
Client访问在新版本中将不直接操作zookeeper,通过HMaster的RPC远程端口间接获取meta数据 。Client获得RegionServer Location后将直接对接RegionServer服务,无需经过HMaster转接 。
- HMaster
HMaster主要功能:把HRegion分配到某一个RegionServer;有RegionServer宕机了,HMaster可以把这台机器上的Region迁移到active的RegionServer上;对HRegionServer进行负载均衡;通过HDFS的dfs client接口回收垃圾文件(无效日志等) 。 - HRegionServer
维护HMaster分配给它的HRegion,处理对这些HRegion的IO请求,也就是说客户端直接和HRegionServer打交道;负责切分正在运行过程中变得过大的HRegion 。
- HRegion
每个HRegion由多个Store构成,每个Store保存一个列族(Columns Family),表有几个列族,则有几个Store,每个Store由一个MemStore和多个StoreFile组成,MemStore是放在内存中的,写到文件后就是StoreFile 。StoreFile底层是以HFile的格式保存 。
- HLog
HLog(WAL log):WAL意为write ahead log(预写日志),用来做灾难恢复使用,HLog记录数据的变更,包括序列号和实际数据,所以一旦region server 宕机,就可以从log中回滚还没有持久化的数据 。
- HFile
HBase的数据最终是以HFile的形式存储在HDFS中的,HBase中HFile有着自己的格式 。
希望本文对初学HBase的读者有所帮助,若有遗漏之处欢迎留言讨论 。
推荐阅读
- SpringBoot如何用Session共享实现分布式部署?
- 微信后台开发工程师:微信研发体系下的分布式配置系统设计概要
- 聊聊大益的熟茶系列,大益普洱老茶头602批
- 聊聊傣家三味茶,今天你喝对茶了吗
- 什么是HBase?它是怎样工作的?终于有人讲明白了
- 前端杂谈:浅聊GMS
- 面向AI应用分布式执行框架
- 网线也有高低?聊聊网线的差别
- 全新架构的 Hmily 分布式事务框架 2.1.1发布
- 缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走
