Hbase架构

Hbase架构

Hbase架构
包括了HMaster、HRegionSever、HRegion、HLog、Store、MemStore、StoreFile、HFile等。
HBase底层依赖HDFS,通过DFS Cilent进行HDFS操作。HMaster负责把HRegion分配给HRegionServer,每一个HRegionServer可以包含多个HRegion,多个HRegion共享HLog,HLog用来做灾难恢复。每一个HRegion由一个或多个Store组成,一个Store对应表的一个列族,每个Store中包含与其对应的MemStore以及一个或多个StoreFile(是实际数据存储文件HFile的轻量级封装),MemStore是在内存中的,保存了修改的数据,MemStore中的数据写到文件中就是StoreFile。

Client:

1.是整个Hbase集群的访问入口。
2.使用Hbase RPC(RPC通信功能)机制与HMaster和HRegionServer进行通信。
3.与HMaster通信进行管理类的操作。
4.与HRegionServer通信进行数据读写的操作。
5.包含访问Hbase的接口,并维护cache来加快对Hbase的访问。

Zookeeper:

1.保证任何时候,集群中只有一个活跃的HMaster
2.存储所有的HRegion寻址入口
3.实时监控HRegionServer的上线和下线信息,并实时通知给HMaster
4.存储Hbase的schema和table元数据
5.Zookeeper Quorum存储-ROOT-表地址、HMaster地址(hbase.zookeeper.quorum)

DFS Cilent:

对外提供管理文件/目录、读写文件以及管理与配置HDFS系统等功能。

HMaster:

1.管理HRegionServer,实现负载均衡
2.为HRegionServer分配HRegion
3.发现失效的HRegionServer会重新分配其上的HRegion
4.HDFS上的垃圾文件回收(通过HDFS的dfs client接口回收垃圾文件、无效日志等)
5.处理schema的更新请求
注:HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。

HRegionServer:

1.维护HMaster分配给的HRegion,处理对这些HRegion的IO请求,也就是说客户端直接和HRegionServer打交道。
2.负责切分运行过程中变大的HRegion

HRegion:

每个HRegion由多个Store构成,每个Store保存一个列族(Columns Family),表有几个列族,则有几个Store,每个Store由一个MemStore和多个StoreFile组成,MemStore是Store在内存中的内容,写到文件后就是StoreFile。StoreFile底层是以HFile的格式保存。

HLog:

Hbase架构
假设没有HLog,我们进行一个写请求,会首先写到MemStore上,等到Memstore到达一定容量后,才会flush到storefile中。但是如果在这之前主机断电了呢?那这部分操作的数据全丢失了。这显然不是我们想到的结果,于是有了HLog,当发起一个写请求时,会先往HLog中写再往MemStore中写,成功后(此时还没被存到sotrefile)就给客户端一个写入成功的response。

HFile:

Hbase架构
HFile是HBase中KeyValue数据的存储格式(这里不要把KeyValue想成Map的那种形式,理解起来会好一点),HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile 。