HBase体系架构

首先要知道Hbase服务器体系结构是主从服务器架构,它有HBbase Master(主服务器)和HRegion(从服务器群)构成。其中HBase Master服务器通过Zookeeper来进行协调并处理所有的HRegion服务器运行期间可能遇到的错误。HMaster本身并不存储Hbase中的任何数据,Hbase中的数据是存储在Hregion服务器群中的,也是放在HDFS上的。HBase体系结构图如下:

HBase体系架构_第1张图片


一. HMaster(主服务器)

HMaster的主要任务就是告诉每个HRegion服务器它需要维护哪些HRegion,所以每台HRegion服务器都需要和HMaster服务器保持通信。HMaster没有单点问题,在Hbase中可以启动多个HMaster,通过Zookeeper的Master选举机制保证总有一个HMaster正常运行并提供服务。

当一台新的HRegion服务器登录到HMaster时,HMaster会告诉它等待分配数据,当一台HRegion服务器死机时,HMaster会把它负责的HRegion标记为未分配,然后再把他们分配到其他的HRegion服务器中。

HMaster在功能主要负责Table和HRegion的管理工作,具体包括:

    1.管理用户对Table的增、删、改、查。

2.管理HRegion的负载均衡,调整HRegion分布

3.在HRegion分裂后负责新HRegion的分配

4.在HRegion服务器停机后负责失效的HRegion服务器上HRegion的迁移。

二.Zookeeper(协调服务组件)

Zookeeper 负责管理Hbase中多HMaster的选举、服务器之间状态同步等。主要工作是:存储HBase元数据信息、实时监控RegionServer、存储所有Region的寻址入口。。。。

三.HRegion

HBase中所有的数据都是保存在HDFS上的,用户通过HRegion服务器来获取这些数据,通常每台机器只运行一个HRegion服务器,而且每个区段的HRegion也只会被一个HRegion服务器维护。下面是HRegion服务器体系结构:

HBase体系架构_第2张图片

HRegion服务器主要包含两大部分:HLOG部分和HRegion部分。

HLOG用来存储数据日志,采用的是先写日志的方式(意思是在对HRegion进行操作之前要先把日志写好,再进行操作)。

HRegion由很多的Store组成,每一个Store存储的实际上是一个列族下的数据。此外,在每个Store中都包含有一块MemStore,MemStore驻留在内存中,数据到来时首先更新到MemStore中,当到达一定的阈值后再更新到对应的StoreFile(底层实现是HFile)中,StoreFile负责的是实际的数据存储也是HBase种最小的存储单位。

另外,HBase中不涉及数据的直接删除和更新操作,所有的数据均是通过追加的方式进行更新,以时间戳进行区别。数据删除和更新在HBase合并(compact)的时候进行。当Store中StoreFile的数量超过设定的阈值时将触发合并操作,该操作会把多个StoreFile文件合并成一个StoreFile文件。

当用户需要更新数据的时候,数据会被分配到对应的HRegion服务器上提交修改。数据首先被提交到HLOG文件中,在操作被写入HLOG之后commit()调用才会将其返回给客户端。所以HLOG文件可以用于故障恢复,当一台HRegionServer发生故障,那么它所维护的HRegion会被重新分配到新的机器上,这是HLOG会安装HRegion进行划分,新的机器在加载HRegion的时候可以通过HLOG进行恢复。

当一个HRegion变得太过巨大,超过了设定的阈值时,HRegion服务器会调用HRegion.closeAndSplit()将HRegion拆分为两个,并由HMaster决定由哪台HRegion服务器来存放新的文件。


本文大部分内容摘抄自《Hadoop实战》。


你可能感兴趣的:(HBase)