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管理