hbase写入性能 hbase读写数据流程_zookeeper



1、hbase读数据的流程 -- 根据rowkey读取

1)client先去访问zookeeper,从zookeeper上获取meta表的位置信息

  之前的版本中系统表除了meta、namespace表外还有一个root表,root中存储了meta表的元数据信息(meta表的位置信息)

 

2)client向meta表的region所在的regionserver上发起读请求,读取了meta表数据,获取hbase集群上所有用户表的元数据

 

3)根据meta表中region的分配及划分,client获取当前要访问的表的region所在的regionserver信息  

 

4)client向对应的regionserver发起读请求  

 

5)regionserver收到client访问求情,扫描memstore,在扫描blockcache(加速读的内容缓存区),还没有获取数据则到storeFile中读取数据

 

6)regionserver将数据响应给client

 

2、hbase写数据的流程 -- 根据rowkey写

1)client先去访问zookeeper,从zookeeper上获取meta表的位置信息

  之前的版本中系统表除了meta、namespace表外还有一个root表,root中存储了meta表的元数据信息(meta表的位置信息)

 

2)

 

3)根据meta表中region的分配及划分,client获取当前要访问的表的region所在的regionserver信息  

 

4)client向对应的regionserver发起写请求  

 

5)regionserver收到请求后,先将数据写入到Hlog中防止数据丢失

 

6)在将数据写入到memstore(加速写的内存缓存区)中,memstore默认大小为128M

 

7)当写入到hlog及memstore都成功后则数据写入成功

 

8) 当memstore达到一定阈值(128M或更小的值),会将memstore中的数据flush成storeFile文件  

 

9)当storeFile文件逐渐增多及达到一定时间后会触发compact合并机制,compact合并会将多个storeFile文件最终合并为一个storeFile文件

compact合并分为两个过程:

  小合并

  大合并

 

10)当单个storeFile文件越来越大,达到一定阈值(动态阈值)会触发split机制,将一个region一分为二,被master分配给regionserver管理