1. HBase系统架构

HA集群 Hbase Java连接 hbase集群架构_数据

 

HBase集群由如下角色组成:

  • Zookeeper集群,提供HMaster的HA以及分布式配置管理服务
  • HMaster:Active Master和用于HA的Backup Master
  • HRegion Servers:HBase集群中负责数据存储的服务器,类似Master/Slave架构中的Slave
  • HRegion:用于存储HBase表中的部分数据行,[StartRowKey,endRowKey),一个表中的数据可能分布在多个HRegion中。当一个HRegion中存放的数据记录超过一定容量时,类似MongoDB的Chunk,HRegion也会会分裂成多个HRegion。不同的HRegion会被HMaster分配到不同的HRegionServer上进行管理,这就体现了数据分散存储的特性
  • Store:一个HRegion中存在多个Store,Store可以认为与表的Column Family对应,也就是,不同的Column Family进行分别存储,以便针对不同的Column Family采用不同的压缩算法进行压缩。Store由MemStore和一系列的StoreFile组成,用户的数据首先写入到MemStore中,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile)。
  • StoreFile:一个Store中包含一个或者StoreFile,是将MemStore中的数据Flush到磁盘上。

 

 

 

2. HBase的系统角色

2.1  Client

  • 包含访问HBase的接口,并维护cache来加快对HBase的访问,与HRegionServer打交道

2.2 Zookeeper

  • 保证任何时候,集群中只有一个Master(HA)
  • 存贮所有Region的寻址入口
  • 实时监控Region server的上线和下线信息。并实时通知给Master
  • 存储HBase的schema和table元数据

2.3 Master

  • 为Region Server分配Region
  • 负责Region Server的负载均衡
  • 发现失效的Region server并重新分配其上的region到其它的HRegionServer(需要时间,但是这个对用户的读写这个上面的数据产生影响)
  • 管理用户对table的增删改查操作

2.4 Region Server

  • Region server维护region,处理对这些region的IO请求
  • Region server负责切分在运行过程中变得过大的region

2.5 HLog、HFile

HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:

  • HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装。
  • HLog,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File。

 

 

 

3. Zookeeper的作用

 

HA集群 Hbase Java连接 hbase集群架构_数据_02


 

Master和所有RegionServer都向Zookeeper注册

 

 

4. Write Ahead of Log

 

HA集群 Hbase Java连接 hbase集群架构_大数据_03


 

HLog日志重做文件,首相将操作日志写到HLog中,假如写HRegion时,此时的HRegion失败导致写失败,此时可以从HLog中重新读取写失败的数据

 



 

5. HDFS vs HBase

 

HA集群 Hbase Java连接 hbase集群架构_数据_04


 

 

8. SQL vs HBase

HA集群 Hbase Java连接 hbase集群架构_系统架构_05