文章目录
结构
Region server
负责实际数据的读写,当访问数据时,客户端与HBase的RegionServer直接通信。RegionServer负责管理多个Region,负责在此上面的所有Region的读写操作。运行在HDFS的DataNode上,包含四部分:WAL,BlockCache(读缓存),MemStore(写缓存),HFiles(keyvalue对)
Master Server
管理Region的位置,当集群处于数据恢复或动态调整时,分配Region到某一个RegionServer中,监控所有RegionServer的状态,提供DDL(新增和删除表结构)相关的API。
ZooKeeper
负责维护和记录整个HBase集群的状态,分布式的无中心的元数据存储服务。
读写操作
HBase把各个region的位置信息存储在META表里,META表存储在zookeeper中。
访问流程
Meta Table的结构
Key: region的开始rowkey, regionid
Value: RegionServer
写入流程
MemStore的结构
在内存里按key的顺序存储key-value对,一个Memstore对应一个CF
同样HFile中key-value对也是key有序的。
HFile的结构
保存了多级索引,查询请求不需要遍历整个HFile
打开HFile后,系统自动缓存HFile的索引在BlockCache中。
混合读
Minor Compaction
HBase自动选择较小的HFile, 将它们合并成更大的HFile,减小HFile的数量
Major Compaction
Major compaction指一个region下的所有HFile做归并排序, 最后形成一个大的HFile
Region
Region=一组连续的key,一张表垂直分成一个或多个region
灾难恢复
Reference
[1]. 深度分析HBase架构