HBase物理架构:
- 一个RegionServer包含一个WAL,一个BlockCache(读缓存)和多个Region。
- 一个Region包含多个存储区,每个存储区对应一个列簇。
- 一个存储区由StoreFile和MemStore组成。
- 一个StoreFile对应一个HFile和一个列簇。
- HFile和WAL作为序列化文件保存在HDFS上。
- Client和RegionServer交互。
HMaster:
- 是HBase集群的主节点,可以配置多个,用来实现高可用。
- 处理元数据的变更。
- 监控RegionServer
- 负责RegionServer的故障转移
- 负责RegionServer的负载均衡
- 通过zookeeper发布自己的位置给客户端
RegionServer:
RegionServer负责管理和维护Region,负责存储HBase的实际数据。
- 负责管理HBase的实际数据。
- 处理分配给他的Region。
- 刷新缓存到HDFS。
- 维护HLog。
- 执行Compaction。
- 负责处理Region分片
HRegion
HRegion 可以看成是表的横向切分,HBase 表的分片,HBase 每个表都会根据 RowKey 值被切分成不同的 HRegion 分散存储在 HRegionServer 中,在一个HRegionServer 中可以有多个不同的 HRegion。这些 HRegion 可以是来自不同的表。HRegion、Table、HRegionServer 关系如下面的图所示。
Store:
每一个 Region 内部,又分为多个 Store,一个 Store 对应表中的一个列族。也就是说一个 Store 存储了对应表该列族下的部分数据。
MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL 中之后,HRegsionServer 会在内存中存储键值对。该组件功能可以看该文档《读流程》和《写流程》部分进行更深刻的理解。
HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以 HFile 的形式存储在 HDFS 的。文件内容是二进制。