1、zookeeper
存储Hbase元数据信息
实时监控RegionServer
存储所有Region的寻址入口
保证Hbase集群中只有一个Master
2、client
管理类操作,client与HMaster进行RPC通信
数据读写操作,client与RegionServer进行RPC通信
3、HMaster
HMaster没有单点问题,在Hbase中可以启动多个HMaster,通过Zookeeper的Master选举机制保证总有一个Master正常运行并提供服务,其他HMaster作为备选时刻准备提供服务。HMaster主要负责Table和Region的管理工作。
管理用户对表的增删改查
管理RegionServer的负载均衡,调整region分布
在region分裂后,负责新region的分配
在regionserver死机后,负责失效RegionServer上的Region迁移
4、HRegionServer
内部管理一系列HRegion对象,每个HRegion对应了Table中的一个Region
HRegion由多个HStore组成,每个HStore对应了Table中的一个Column Family的存储
HStore存储是Hbase存储的核心,由两部分组成:MemStore和StoreFile
用户写入的数据首先会放入MemStore中,当MemStore满了以后会缓冲成一个StoreFile(底层实现是HFile),当StoreFile文件数量达到一定的阀值,会触发Compact操作,将多个StoreFile合并成一个StoreFile,在合并的过程中会进行版本合并和数据删除,因此可以看出Hbase实际只有数据新增,所有的更新和删除操作都是在后续的Compact过程中进行的,这使得用户的写操作只要进内存中就可以了立即返回了,保证了Hbase I/O的高性能。
StoreFile在Compact之后,会形成越来越大的StoreFile,当单个StoreFile大小超过一定的阀值之后,会触发split操作,同时把当前的region分裂成2个region,父
region会下线,新分裂的2个子region会被HMaster分配到相应的HRegionServer上。