HBase的架构

 

1、整体架构

2、HBase中涉及的角色及每个角色的具体功能

2.1 HMaster

2.2 RegionServer

2.2.1 保证高可靠性的WAL

2.3 zookeeper

2.3.1 客户端连接RS

3、RS内部剖析

3.1  Region

3.2 Store

3.2.1 memstore

3.2.2 HFile


1、整体架构

· HMaster

       · 多个RegionServer

                  · HLog

                  · BlockCache

                  · 多个Region

                              · 多个Store

                                         · MemStore

                                         · 多个StoreFile  (以HFile的文件格式存储于HDFS中)

· HBaseClient

· Zookeeper

· HMBackup

2、HBase中涉及的角色及每个角色的具体功能

2.1 HMaster

  1. 管理所有的RegionServer,当HM通过zookeeper得知某个RS宕机或进程故障,由HM将该RS原来所负责的Regions转移到其他正常的RS上。
  2. 负责表、列族和region的相关操作,例如表的create,modify,remove,enable,disable;列族的add,modify,remove;region的move,assign,unassign;以及权限,表的分割与合并等。
  3. 负责集群的负载均衡并定期检查和清理hbase:meta表

与HDFS不同的是,客户端获取数据由客户端直连RS,所以HM挂了依然可以查询数据,但不能建新的表;HBase不若HDFS般依赖Master。

2.2 RegionServer

负责服务和管理Region,是用户数据表的实际管理者。

数据在分布式集群中会被水平分区,每个RS管理一部分分区,负责数据的写入,查询,缓存和故障恢复等。

同时在分布式集群中,RS与HDFS的DN通常按1:1的比例安装,这样RS的数据文件可以存一个副本于本机的DN中,从而在读取时可利用HDFS的短路径读取(short circuit)绕过网络请求,降低读取时延。

  1. 负责数据的读取和写入,比如get,put,delete,next等
  2. Region的拆分和压缩。拆分Region确实是RS作出的本地决策,但拆分过程本身必须与许多参与者协调。RS在Region拆分前后通知HM,从而更新.meta.表,以便客户端发现新的子Region,并重新排列HDFS中的目录结构和数据文件。
  3. 一些后台操作:检查拆分并处理轻微压缩,检查主要的压缩,定期刷新Memstore到Storefile中的内存写入,定期检查RS的WAL(write ahead log)

2.2.1 保证高可靠性的WAL

每个RS中有一个HLog,在对数据进行写入的所有操作时,都要先将操作记录到HLog中,如果操作未成功写入到HLog,那么也不会写入到相应数据所在的RS的store的MemStore中。

2.3 zookeeper

存储着hbase:meta信息。HBase:meta表记录着HBase中所有Regoin相关的信息。Zookeeper管理了所有RS的信息,包括具体的数据段存放在哪个RS上。

RS定时向zookeeper发送心跳。

2.3.1 客户端连接RS

客户端先与zookeeper通信,查询出需要连接哪个RS,再与相应的RS进行连接。

3、RS内部剖析

RS负责实际数据的读写,一个RS里包含一个WAL与一个或多个Region。当数据量小的时候一个Region就可以存放所有数据,数据量大的时候RS就会拆分region,并通知HM将多个region分配到一个或多个RS中。

3.1  Region

有start key 和end key,这里的Key就是row key,由start key和end key将HBase中的一个大表横向切割成几个子表,这些子表即为region。同时region也是HBase中负载均衡的基本单元,当一个region增长到一定大小时,会自动分裂成两个(region自带分裂策略),一个表中的数据会被分到一个或多个region中进行存储,而region又被HM分配到一个或多个RS中,且一个Region与一个column family确定唯一的cell,这个cell就是store。一个region里有多个store。

3.2 Store

3.2.1 memstore

数据被写入HLog后就被加载到MemStore,MS用于在内存中保存数据,MemStore到达某个阈值时会被刷写到HDFS上,以HFile的形式被持久化起来。

3.2.2 HFile

HFile只有索引信息,真正的东西在HDFS的block中,一个block对应一个HFile。HFile相当于HDFS的客户端。

在物理存储上我们管memstore刷写而成的文件叫HFile,storefile就是Hfile的抽象类而已。

发布了94 篇原创文章 · 获赞 20 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/helloworld0906/article/details/103027470