Hbase的读写流程

本文详细介绍了HBase的写入流程,包括数据如何通过memstore和storefile存储,以及更新和删除操作的具体处理方式;同时阐述了读取流程,解释了如何通过zookeeper定位RegionServer并获取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写流程

在这里插入图片描述
Hbase使用memstore和storefile存储,Hbase只有增加数据,所有的更新和删除操作都是在后续的合并中进行,使得用户在写操作只要进入内存就立即返回实现Hbase高速存储
1、client通过zookeeper的调度,向regionServer发出写数据请求,在Region中写数据
2、数据首先是写入HLog和memstore,memstore的数据是有序的,当memstore达到阈值后就会生成一个新的memstrore
3、老的memstore就会被添加进一个flush队列,由单独的线程flush到磁盘中,同时zookeeper会记录下一个checkpoint点
4、随着storefile文件不断的增多,当数量到达阈值后就会进行合并操作,对相同的key的修改合并到一起,版本合并和数据删除形成 一个大的storefile。
5、当系统发生意外时候,可能导致memstore数据丢失,会从HLog中恢复上一个checkpoint点之后的数据。

注意:Storefile是只读的,一旦创建之后就不可修改。因此hbase的更新就是不断追加的操作。当一个store的storefile达到一定的阀值后,就会进行一次合并操作,将对同一个key的修改合并到一起,同时进行版本合并和数据删除,形成一个大的storefile。当storefile的大小达到一定的阀值后,又会对storefile进行切分操作,等分为两个storefile。

读流程

zookeeper存储hbase数据信息的表
在这里插入图片描述
1、client如果在缓存中没有找到region节点信息 就会请求zookeeper 查找 hbase表,查找meta-region-server(后面皆以meta表示)表,获取region位置信息,从而找到相应的RegionServer,查询过的region会放在client缓存里 并且该缓存不会主动删除
2、通过RegionServer查找响应的数据
3、RegionServer的内存分为memstore和BlockCache两部份,其中memstore是用来写数据的,BlockCache主要用来读数据,读数据首先往memstore 查找,如果memstore也查找不到数据 就会往BlockCache查找 再查找不到就会往storefile查找,并将查找到的数据存放在BlockCache

1、BlockCache是Region Server级别的,
2、一个Region Server只有一个Block Cache,在Region Server启动的时候完成Block Cache的初始化工作。

最好的查找region的信息的时间

在client中有region节点的缓存

最坏的查找region信息的时间

client->zookeeper->hbase表->meta-region-server表->regionserver->region->client
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值