hbase获取表信息_HBase读写流程

前言:对于一个数据库来说,想学会它的底层原理,就一定要熟悉它的读写过程,因为数据库最常见的操作就是读和写前面我们已经把数据模型和架构各自击破,本篇将通过读写流程将学过的知识串一遍,做到融汇贯通 本篇目标: 1.掌握读写流程的主要过程2.思考读写过程中所涉及原理与细节
01 读数据流程先来看下读取数据的流程: 9f59e6d5707cb152d6091ad395abed74.png HBase读流程

我把读流程划分为2大步7小步:

1.获取目标Region位置

1)Client访问ZooKeeper,获取元数据表hbase:meta位置信息(哪个Region Server)

2) 访问目标RS,读取hbase:meta表,根据读请求的 table/rowkwy ,查询目标数据位于哪个RS中的哪个region 3) 将table的region信息hbase:meta表的位置信息缓存在客户端的meta cache,方便下次 访问

2.读取目标数据

4)Client向目标RS发送Get请求

5)分别在 Block Cache、MemStore、StoreFile中查找数据 前面说过同一个数据存在很多版本,不同版本可能存在不同位置。查询时需要把所有版本取出来,返回最新的那个数据6)从 StoreFile中查询到的数据块(Data Block)缓存到Block Cache 如果查询时在 Block Cache中查到了该文件,就不用查磁盘中的这个文件了(flush会产生新文件) Block Cache空间有限,最近最少用的数据会删除,使用的是LRU缓存淘汰算法 7)比较Block Cache和MemStore中的数据(都在内存中),将最终结果返回给客户端
02 写数据流程

237caf5a5a26edafbafe8e66ce585766.png

HBase写流程 我把写流程划分为2大步7小步 1.获取目标Region位置

1)Client访问ZooKeeper,获取元数据表hbase:meta位置信息

2) 访问目标RS,读取 hbase: meta表 ,根据 table/rowkwy ,确定写入位置于哪个RS中的哪个region 3) 将hbase:meta表的位置信息table的region信息缓存在客户端的meta cache,方便下次 访问 如果缓存中已经有信息了,则下次写入可跳过前两步 2.写入目标数据4)Client向目标RS发送Put请求 5)先将数据顺序写入WAL(其实也是先写入内存,再写到HDFS) 6)再将数据写入MemStore,数据会在MemSrore中进行排序7)写入成功后返回ack给Client,表明写入成功
总结: 看完HBase的读写流程,可以发现Master一直没有出现,因为读写流程就不需要Master。不过Master不能长期停止运行,这样集群是不健康的。 其次,HBase的读是比写慢的,读取的过程会扫描磁盘文件。写入数据时,只要数据进了内存基本就完成了,后面的flush和Region Split会由别的线程来完成。
你学废了吗? —  END  —
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值