一、HBase逻辑模型:

hbase region过多 hbase中region_数据


行键:

hbase region过多 hbase中region_hbase_02

列族和列:

hbase region过多 hbase中region_数据_03

时间戳:

hbase region过多 hbase中region_hbase_04


二、物理模型:

1,HBase是按照列存储的稀疏行/列矩阵,物理模型实际上就是把概念模型中的一个行进行分割,并按照列族存储,注意空值是不被存储到磁盘的。

hbase region过多 hbase中region_数据_05

2.Region和Region服务器:
表在行方向上,按照行键范围划分成若干的Region,每个Region包含一定数据;
每个表最初只有一个region,当记录数增加到超过某个阀值时,开始分裂成两个region。

Region是HBase中分布式存储和负载均衡的最小单位(即一个表的所有Region会分布在不同的Region服务器。
物理上所有数据存放在hdfs,由Region服务器提供region管理(提供数据服务)。
一台计算机(即一个物理节点)只运行一个HRegionServer程序;一个Hregionserver可以管理多个region实例。
一个Region服务器只维护一个HLog(Write-Ahead log预写式日志,用来做灾难备份的)
一个region实例包括hlog日志和存放数据的store;每个store保存一个列族的所有数据;
每个store由一个memStore和零个或多个StoreFile组成;StoreFile则是以HFile的格式存储在HDFS上。

写数据过程:客户端进行更新操作,先连接HRegionServer,然后向Region提交变更:提交的数据首先写入WAL和MemStore中,当MemStore中的数据累计到某个阀值时,HRegionServer就会启动一个单独的线程就MemStore中的内容刷新到磁盘,形成一个StoreFile。当StoreFile累计到某个阀值时,就会将多个StoreFile合并成一个StoreFile,合并过程中会进行合并和数据删除,因此HBase其实只有增加数据,所有的更新和删除操作都是在后续的合并过程中进行的。StoreFile在合并过程中会逐步形成更大的StoreFile,当StoreFile的大小超过一定阀值时,会把当前的Region分割Split成两个Regions,并由HMaster分配到相应的Region服务器上,实现负载均衡。


HMaster:主服务器程序。负责将Region分配给Region服务器,协调Region服务器的负载并维护集群的状态。
HMaster不会对外提供数据服务,而是由Region服务器负责所有的Region的读写请求及操作。
(如果Region服务器发生故障终止后,HMaster会通过Zookeeper感知到,并处理相应的Log文件,将失效的Regions进行重新分配)。
此外,HMaster还负责管理表的schema和对元数据的操作。(HMaster失效会导致所有的元数据无法被修改,但表的数据读写还是可以正常进行的。)