1. 负责管理 HBase 的元数据,表结构,
2. 表的 Region 信息 负责表的创建,删除和修改
3. 负责HRegionServer分配Region,分配后将元数据写入相应的位置
HRegionServer1. 含有多个 HRegion
2. 处理 Client 端的读写请求(根据HMaster返回的元数据找到对应的HRegionServer)
3. 管理 Region 的 Split分裂、StoreFile 的 Compaction合并
HRegion1. 一个 HRegion 里会有1到多个Store
2. HRegionServer 维护一个HLog
3. HRegion 是分布式存储和负载的最小单元
4. 表通常被保存在多个 HRegionServer 的多个 Region 中
Store1. Store 是存储在磁盘的最小单元,由于内存中的MemStore和磁盘中的若干StoreFile组成
2. 一个 Store 里会有一个或多个StoreFile 和 一个MemStore
3. 每个Store存储一个列族
Zookeeper1. 分布式管理服务,来维护集群中所有服务的状态 ,(一致性协议至少要三台以上的实例)
写操作
1. Client 通过访问zk的调度,向RegionServer发出写的请求
2. 数据被写入Region的Memstore,直到MemStore达到预设阈值
3. Memstore中的数据被flush成一个StoreFile
4. 随着StoreFile文件的不断增多,达到设定阈值的后,触发Compact合并操作,并将Compact合并 压缩,即多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除
5. StoreFile 通过不断的Compact合并操作,逐步形成越来越大的StoreFile
6. 当个StoreFile大小超过一定阈值后,触发Split操作,把当前的Region Split成2个新的Region,父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上
读操作1. Client访问Zookeeper,查找-ROOT-表,获取.META.表信息
2. 从.META.表查找,获取存放在目标数据的Region信息,从而找到对应的RegionServer
3. 通过RegionServer获取需要查找的数据
4. RegionServer的内存划分为MemeStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据,请求先到MemStore中,查不到再到BlockCache中查,再查不到就会到StoreFile,并把读的结果放入到BlockCache中