Hbase读写流程简述

刚开始接触Hbase,如有说的不对的地方,希望进行指正
Hbase读请求过程:
1:客户端通过Zookeeper以及root表和meta表找到目标数据所在的regionserver
2:联系regionserver查询目标数据
3:regionserver定位到目标数据所在的region,发出查询请求
4:region现在memstore中查找,命中则返回
5:如果在memstore中找不到,则在storefile中扫描

Hbase写请求过程:
1:client向region server提交写请求
2:region server找到目标region
3:region检查数据是否与schema一致
4:如果客户端没有指定版本,则获取当前系统的时间作为数据的版本
5:将更新写入到WAL Log中
6:将更新写入memstore中
7:判断memstore是否需要flush为store文件

PS:Hbase使用memstore和storefile存储对表的更新
数据在更新时首先写入Log(WAL Log)和内存(memstore)中,memstore中的数据是排序的,当memstore累计到一定阈值时,就会创建一个新的memstore,并且将老的memstore添加到flush队列,由单独的线程flush到磁盘上,成为一个storefile。
当系统出现意外时,会导致内存中数据丢失,此时使用Log来恢复checkpoint之后的数据。

storefile是只读的,一旦创建后就不可以再修改。因此Hbase的更新其实是不断追加的操作。当一个store中的storefile达到一定阈值后,就会进行一次合并,将对同一个key的修改合并到一起,形成一个大的storefile,当storefile的大小达到一定阈值后,又会对storefile进行split,分为两个storefile

你可能感兴趣的:(Hbase)