hbase表数据的读写流程

来源:互联网 发布:卫星通信网络 编辑:程序博客网 时间:2024/06/06 01:11


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写

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

compact合并分为两个过程:

  小合并   minor compact

  大合并   major compact  

 

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