聊聊HBase分布式数据库设计那些事( 二 )

表物理存储模型

聊聊HBase分布式数据库设计那些事

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

文章插图
 
上图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分布式数据库设计那些事】本文简单介绍了Hbase分布式数据的数据模型、概念视图、NOSQL特性、整体架构内容 。对Hbase的一些关键概念有了初步认识,从整体上对框架有了全局的了解 。
希望本文对初学HBase的读者有所帮助,若有遗漏之处欢迎留言讨论 。




推荐阅读