宏观架构

  1. Master:负责Region分配到具体的RegionServer;如果RegionServer宕机,Master负责将宕机的Region迁移到其他RegionServer上;对RegionServer进行负载均衡;处理元数据的请求(表的创建修改删除,列簇的创建修改删除)

  2. RegionServer:负责维护Master交给他的Region,处理这些Region的IO请求;负责Split和Compation Region

  3. Region:表的一部分数据,是负载均衡的最基本的单位,当Region达到一定的大小就会自动split

  4. Zookeeper:为 HBase 提供 Failover 机制,选举 Master,避免单点Master单点故障问题;存储Region的入口信息,即meta,用户的读写请求一般会先访问meta表;监控RegionServer的上线和下线信息,及时通知给Master;

  5. HDFS:真正承载HBase数据的组件,同时给这些数据提供冗余和容错

image.png

RegionServer结构

  1. 一个WAL:预写日志(Write-Ahead Log ),当操作达到Region的时候,HBase不管三七二十一先把操作写到WAL中,因为HBase的写是先写到MemStore内存中的,然后到达一定的大小在flush到HDFS中,如果出现了宕机或者断电,那么MemStore中的数据就相当于丢失了,WAL就相当于一个保险,写入MemStore前先写WAL,这样出现故障的时候就可以从WAL中恢复数据了

  2. 多个Region:一个Region相当于一个表中的一段数据,每个Region都有StartKey和EndKey,代表了该Region存储Key的范围

image.png

Region结构

  1. 多个Store:每个Region中都包含一个或者多个Store,一个Store的对应一个列簇,如果一个表中有两个列簇那么Region中就有两个Store

image.png