hbase原理

hbase是hadoop的数据库,主要用来存储数据,其存储数据的文件的格式是文档,基础是hdfs,数据存储在hdfs上,但是自己管理。

hbase物理架构体系

系统逻辑部署架构图与物理部署架构图区别_系统逻辑部署架构图与物理部署架构图区别


hbase主要由HMaster和RegionServer组成。

HMaster:是hbase集群的主节点,但是其可以有多个,用于高可用集群,当主节点不能工作时,可以使用其他的hmaster进行替换。

功能:监控regionserver,处理regionserver的负载均衡,故障转移

处理元数据的变更,通过zookpr把自己的位置信息告诉客户端。

RegionServer:regionserver其实是hbase的服务,部署在一台服务器上。

一个regionserver包含一个WAL(日志文件),一个BlockCache(读缓存),和多个region

一个region包括多个store(存储区),每一个store对应一个列簇

一个store包含多个storefile和一个MemStore组成。

一个storefile包含一个hfile,对应一个列簇

hfile和WAL作为序列文件保存在hdfs上。

功能:与客户端进行交互,负责管理维护region和存储hbase的实际数据。处理分配给他的region,刷新缓存到hdfs中,维护Hlog

执行compaction,负责处理region分片

Client

整合HBase集群的入口

使用HBase RPC机制与HMaster和HRegionserver通信

与HMaster通信进行管理类的操作

与HRegionserver通信进行读写类操作

包含访问hbase 的接口,client 维护着一些cache 来加快对hbase 的访问,比如regione 的位置信息

Zookeeper

保证任何时候,集群中只有一个running master,Master与RegionServers启动时会向ZooKeeper注册默认情况下,HBase 管理ZooKeeper 实例,比如,启动或者停止ZooKeeperZookeeper的引入使得Master不再是单点故障

存贮所有Region 的寻址入口

实时监控RegionServer 的状态,将Regionserver 的上线和下线信息,实时通知给Master

存储Hbase的schema和table元数据

hbase工作流程

客户端首先与zookeeper建立联系,Hmaster在zookeeper上注册,留下自己的位置信息,当向hbase发出读写请求,获取meta表所在的rs时,此时zookeeper向客户端返回meta表所在的rs,客户端接收到,根据获得rs的meta表的位置,去相应的rs中读取meta数据,然后在相应的rs中进行数据的读写操作。
主要流程为
hmaster根据表的大小以及负载均衡等条件,分配region给regionserver,regionserver打开region,并创建Hregion实例,它会为每个表的HColumnFamily(用户创建表时定义的列簇)创建一个Store实例,每个Store实例包含一个或多个StoreFile实例。是实际数据存储文件HFile的轻量级封装,每个Store会对应一个MemStore。写入数据时数据会先写入Hlog中。成功后在写入MemStore中。Memstore中的数据因为空间有限,所以需要定期flush到文件StoreFile中,每次flush都是生成新的StoreFile。HRegionServer在处理Flush请求时,将数据写成HFile文件永久存储到HDFS上,并且存储最后写入的数据序列号。

region和table

系统逻辑部署架构图与物理部署架构图区别_系统逻辑部署架构图与物理部署架构图区别_02


1.table中的所有行都是按照rowkey的字典排序

2.table在行的方向上分割为多个Region

3.Region按大小分割,每个表开始只有一个region,随着数据增多,region不断增大,但到达阈值时,region就会分割成两个新的region,因此region会越来越多。
4.region是hbase中分布式存储和负载均衡的最小单元,不同的regioon分布到不同的regionserver上,但Region不会拆分到不同的Region Server上。

Table 在行的方向上分割为多个HRegion,一个region由[startkey,endkey)表示
Region是分布式存储的最小单元,但不是存储的最小的单元。

  1. region由一个或多个Store组成,每个Store保存一个columnfamily
  2. 每个Store又由一个memStore和0个或多个StoreFile组成
  3. memStore存储在内存中,StoreFile存储在HDFS上

Table中Region内部结构
1.一个表会按照行(看数据量)划分为若干个region每一个region分配给一台特定的regionserver管理

2.每一个region内部还要依据列族划分为若干个HStore

3.每个HStore中的数据会落地到若干个HFILE文件中

4.region体积会随着数据插入而不断增长,到一定阈值后会分裂

5.随着region的分裂,一台regionserver上管理的region会越来越多

6.HMASTER会根据regionserver上管理的region数做负载均衡

7.region中的数据拥有一个内存缓存:memstore,数据的访问优先在memstore中进行

8.memstore中的数据因为空间有限,所以需要定期flush到文件storefile中,每次flush都是生成新的storefile

9.storefile的数量随着时间也会不断增加,regionserver会定期将大量storefile进行合并(merge)