HBASE 架构
-
Client
-
包含访问HBase的接口并维护cache来加快对HBase的访问
-
-
Zookeeper
-
保证任何时候,集群中只有一个活跃HMaster
-
存贮所有HRegion的寻址入口
-
实时监控HRegionServer的上线和下线信息,并实时通知HMaster
-
存储HBase的schema和table元数据
-
-
HMaster
-
为HRegionServer分配HRegion
-
负责HRegionServer的负载均衡
-
发现失效的HRegionServer并重新分配其上的HRegion
-
维护集群的元数据信息
-
-
HRegionServer
-
HRegionServer维护HRegion,处理对这些HRegion的IO请求
-
HRegionServer负责切分在运行过程中变得过大的HRegion
-
-
HRegion
-
HBase自动把表水平划分成多个区域(HRegion),每个HRegion会保存一个表里面某段连续的数据
-
每个表一开始只有一个HRegion,随着数据不断插入表,HRegion不断增大,当增大到一个阀值的时候,HRegion就会等分会两个新的HRegion(裂变)
-
当table中的行不断增多,就会有越来越多的HRegion。这样一张完整的表被保存在多个HRegionserver 上
-
-
Memstore 与 storefile
-
一个HRegion由多个store组成,一个store对应一个CF(列族)
-
store包括位于内存中的memstore和位于磁盘的storefile
-
写操作先写入memstore,当memstore中的数据达到某个阈值,HRegionServer会启动flash,将cache写入storefile,每次写入形成单独的一个storefile,storefile以HFile格式保存在HDFS上
-
当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile
-
当一个HRegion所有storefile的大小和数量超过一定阈值后,会把当前的HRegion分割为两个,并由HMaster分配到相应的HRegionserver服务器,实现负载均衡
-
-