分布式列存储数据库Hbase读写流程

这里先大概记录下Hbase数据的读写交互流程,后面研究了Hbase源码有了深入体会再继续叙述详细的读写原理实现。

读数据流程

HBase读数据是比写数据更加复杂的操作流程,这主要基于两个方面的原因:一是整个HBase存储引擎基于LSM-Like树实现,因此一次范围查询可能会涉及多个分片、多块缓存甚至多个数据存储文件;二是HBase中更新操作以及删除操作实现都很简单,更新操作并没有更新原有数据,而是使用时间戳属性实现了多版本。删除操作也并没有真正删除原有数据,只是插入了一条打上”deleted”标签的数据,而真正的数据删除发生在系统合并文件的时候。很显然,这种方式大大简化了数据更新、删除流程,但是读取过程需要根据版本进行过滤,同时对已经标记删除的数据也要进行过滤。
客户群发送读数据请求:
1、客户端首先会根据配置文件中zk地址连接zk,并读取meta-region-server节点信息,该节点信息存储了HBase元数据(hbase:meta)表所在的RegionServer地址以及访问端口等信息
2、zk返回hbase:meta所在RegionServer的访问信息客户端
3、客户端请求元数据meta表所在RegionServer
4、返回元数据表给客户端,并将该元数据表加载到本地并进行缓存,然后在表中确定待检索rowkey所在的RegionServer信息
5、客户端根据数据所在RegionServer的访问信息,向该RegionServer发送真正的数据读取请求
6、服务器端接收到该请求之后,先查询内存MemStore中是否有符合的数据,如果没有再去StoreFile文件中查询,查到数据则返回结果给客户端

注:META 表是 HBase 中一张特殊的表,它保存了所有 Region 的位置信息,META 表自己的位置信息则存储在 ZooKeeper 上。

读数据流程图如下:
在这里插入图片描述

写数据流程

客户端发起put写数据请求:
1、客户端首先会根据配置文件中zk地址连接zk,并读取meta-region-server节点信息,该节点信息存储了HBase元数据(hbase:meta)表所在的RegionServer地址以及访问端口等信息
2、zk返回hbase:meta所在RegionServer的访问信息客户端
3、客户端请求元数据meta表所在RegionServer
4、返回元数据表给客户端,并将该元数据表加载到本地并进行缓存,然后在表中确定待检索rowkey所在的RegionServer信息
5、客户端根据数据所在RegionServer的访问信息,向该RegionServer发送真正的数据写请求
6、先将数据写入HLog日志文件。HBase使用WAL机制保证数据可靠性,即首先写日志再写缓存,即使发生宕机,也可以通过恢复HLog还原出原始数据。
7、再将数据写入MemStore缓存。HBase中每列族都会对应一个store,用来存储该列数据,每个store都会有个memstore用于缓存写入数据。HBase并不会直接将数据落盘,而是先写入缓存,等缓存满足一定大小之后再一起落到HFile。

写入数据流程图如下:
在这里插入图片描述

从上面的读写数据交互来看,可以得出以下几点:
1、由于客户端会将hbase:meta元数据表缓存在本地,因此上述步骤中前四步只会在客户端第一次请求的时候发生,之后所有请求都直接从缓存中加载元数据。如果集群发生某些变化导致hbase:meta元数据更改,客户端再根据本地元数据表请求的时候就会发生异常,此时客户端需要重新加载一份最新的元数据表到本地。
2、客户端只需要配置zookeeper的访问地址以及根目录,就可以进行正常的读写请求,不需要配置集群的RegionServer地址列表。
3、Hbase数据的读写交互只涉及到Zookeeper、RegionServer服务(zk上存储了元数据meta表的所在的RegionServer信息,meta表又存储了其他region数据),Master服务并没有参与,master仅仅维护者table和region的元数据信息,负载很低。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值