Hbase体系结构

HBase同样采用Master/Slaves的主从服务器结构,他由一个HMaster和多个HRegionServer构成而所有服务器都是通过Zookeeper协调并处理个服务器运行期间可能遇见的错误HMaster负责管理所有的HRegionServer,各HRegionServer负责存储许多HRegion,每一个HRegion是对HBase逻辑表的分块。如下图所示:

请举个实例来阐述HBase的概念视图和物理视图的不同。 hbase物理结构_服务器


1.HRegion

HBase使用表存储数据集,当表的大小超过存储值设定时,HBase会自动将表划分为不同的区域(Region),每一个区域称为一个HRegion类似于HDFS中的文件与文件块的概念。一个HRegion上保存着一个表中的一段连续的数据。

最开始,一个表只有一个HRegion,随着HRegion逐渐变大,知道超出设定的阈值大小,便会在某行的边界把表分成两个大小基本相同的HRegion,称为HRegion分裂

2.HStore

每个HRegion由多个HSore组成,每个HStore对应表中的一个列族的存储。

HStore由两部分组成:MemStore和StoreFile,用户写入的数据首先放入MemStore,当MemStore(128M)满了以后再刷入StoreFile(30M)。StoreFile是HBase中的最小存储单元,底层最终由HFile实现。

3.HRegionServer

一台机器上只运行一个HRegionServer,HRegionServer包含两个部分:HLog和HRegion。

Hlog用于存储数据日志。到达HRegion的写操作首先被追加导日志中,然后才被加入内存中的MemStore。Hlog文件主要用于故障恢复。例如某台HRegionServer发生故障后,那么保存在HRegionServer中的HRegion会被分配到心得HRegionServer中,新的HRegionServer在加载HRegion的时候通过HLog来对数据进行恢复的。

HRegionServer由多个HRegion组成,每个HRegion对应表中的一个分块,HRegion由多个HStore组成,而HStore对应着一个列族。而HRegion只会被一个HRegionServer管理

3.HMaster

每个HRegionServer都会和HMaster服务器通信HMaster主要任务就是告诉HRegionServer需要存储哪些HRegion

在HBase中可以启动多个HMaster, 通过Zookeeper的Master选举机制来保证系统中总有一个Master在运行,HMaster主要一下功能:

  • 是HBase集群的主节点,可以配置多个,用来实现HA
  • 处理元数据的变更
  • 监控RegionServer
  • 负责RegionServer的负载均衡:存数据时根据HRegionServer的状态来分配数据
  • 处理RegionServer故障转移
  • 通过ZooKeeper发布自己的位置给客户端