浅析HBase架构和系统结构介绍(二)


2 HBase架构

 

                                                                     HBase系统架构图(注意,每个HRegsionServer维护一个HLog文件)


 

2.1客户端(client)

HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC。

2.2 Zookeeper

ZookeeperQuorum中存储的信息包括:

  • 存储-ROOT-表的地址:/hbase/root-region-server
  • 存储HMaster的地址:/hbase/master
  • 存储所有HRegionServer的状态,HRegionServer会把自己以短暂的(Ephemeral)方式注册到 Zookeeper中:/hbase/rs

2.3 HMaster

    HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个HMaster运行,HMaster在功能上主要负责table和region的管理工作:

  • 管理用户对table的增、删、改、查操作
  • 管理HRegionServer的负载均衡,调整region分布
  • 在region split后,负责新region的分配
  • 在HRegionServer停机后,负责失效HRegionServer上的region迁移
  • HDFS的垃圾文件回收
  • 处理schema更新请求

注意:Client访问HBase上数据的过程并不需要HMaster参与(寻址访问Zookeeper和HRegionServer,数据读写访问HRegioneServer),HMaster仅仅维护者table和region的元数据信息,负载很低。

 

2.4 HRegionServer

HRegionServer维护HMaster分配给它的region,并负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。


     HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了table中的一个region,HRegion中由多 个HStore组成。每个HStore对应了Table中的一个column family的存储,可以看出每个columnfamily其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个column family中,这样最高效。

HStore存储是HBase存储的核心,由两部分组成,一部分是MemStore,一部分是StoreFile。MemStore是 Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile)。


相关内容