HMaster:
1.为Region server分配region
2.负责Region server的负载均衡
3.发现失效的Region server并重新分配其上的region。
4.HDFS上的垃圾文件回收。
5.处理schema更新请求。
HRegionServer:
1、管理用户对Table表的增、删、改、查操作;
2、管理HRegion服务器的负载均衡,调整HRegion分布;
3、在HRegion分裂后,负责新HRegion的分配;
4、在HRegion服务器停机后,负责失效HRegion服务器上的HRegion迁移。
HRegion:存储数据,以Rowkey方向来划分多个Region,这样理解,里面存放的是以列(store)为单位的数据,它只是一个基本的数据单位
Store:为一个存储单元,为column familly,一个列族的所有信息
MemStore:是一个内存区域
Hlog:记录操作信息,保证数据完整性
StoreFile:是hbase中的数据文件,而HFile是它的数据存储的实体
StoreFile以HFile格式保存在HDFS上。HFile是Hadoop的二进制格式文件。实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile
读数据的时候:
大致流程:
Client访问Zookeeper获得的元数据,然后去指定的HRegionServer中的HRegion查找数据,首先去MemStore去看看有没有,有就直接返回,没有就去StoreFile找。
详细流程:
Client通过ZK获得-ROOT-表的位置,然后访问它获得-META-表中对应的Region的位置,然后去读,请求先到MemStore中查数据,查不到就到BlockCache中查,再查不到就会到StoreFile上读,并把读的结果放入BlockCache,缓存返回数据。
写数据的时候:
大致流程:
Client获得Zookeeper存储的HMaster返回的元数据信息,去指定的HRegionServer中的HRegion下,首先是把Log写入到HLog中,HLog是标准的Hadoop Sequence File,由于Log数据量小,而且是顺序写,速度非常快;同时把数据写入到内存MemStore中,成功后返回给Client,所以对Client来说,HBase写的速度非常快,因为数据只要写入到内存中,就算成功了。
接着检查MemStore是否已满,如果满了,就把内存中的MemStore Flush到磁盘上,形成一个新的StoreFile。
当Storefile文件的数量增长到一定阈值后,系统会进行合并(Compact),在合并过程中会进行版本合并和删除工作,形成更大的storefile。
当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split),并由Hmaster分配到相应的HRegionServer,实现负载均衡
-ROOT- 与-MATE-
ROOT和MATE表 -》https://blog.youkuaiyun.com/ldds_520/article/details/51674315