表在行方向上,按照行key范围划分成若干的Region
每个表最初只有一个region,当记录数增加到超过某个阀值时,开始分裂成两个region
物理上所有数据存放在HDFS,由Region服务器提供region的管理
一台物理节点只能跑一个HRegionServer
一个Hregionserver可以管理多个Region实例
一个Region实例包括Hlog日志和存放数据的Store
Hmaster作为总控节点
Zookeeper负责调度
一个region由多个store组成,每个store包含一个列族的所有数据
Store包括位于把内存的memstore和位于硬盘的storefile
写操作先写入memstore,当memstore中的数据量达到某个阀值,Hregionserver会启动flashcache进程写入Storefile,每次写入形成一个单独的storefile
当storefile文件的数量增长到一定阀值后,系统会进行合并,在合并过程中会进行版本的合并和删除工作,形成更大的storefile
当storefile大小超过一定阀值后,会把当前的region分割成两个,并由Hmaster分配到 相应的region服务器,实现负载均衡
HBase中有两张特殊的Table,-ROOT-和.META.
.META.:记录了用户表的Region信息,它可以有多高region(这的意思是说.META.表可以分裂成多个region,和用户表一样)
-ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region(也就是说它不可分割)
Zookeeper中记录了-Root-表的location