HBase原理-数据读取流程解析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HBase原理-数据读取流程解析 2021-07-06 和写流程相比,HBase读数据是一个愈加简单的操作流程,这次要基于两个方面的缘由:其一是由于整个HBase存储引擎基于LSM-Like树实现,因而一次范围查询可能会涉及多个分片、多块缓存甚至少个数据存储文件;其二是由于HBase中更新操作以及删除操作实现都很简约,更新操作并没有更新原有数据,而是使用时间戳属性实现了多版本。删除操作也并没有真正删除原有数据,只是插入了一条打上”deleted”标签的数据,而真正的数据删除发生在系统异步执行Major_Compact的时候。很明显,这种实现套路大大简化了数据更新、删除流程,但是对于数据读取来说却意味着套上了层层枷锁,读取过程需要依据版本进行过滤,同时对已经标记删除的数据也要进行过滤。 总之,把这么简单的事情讲明白并不是一件简约的事情,为了愈加条理化地分析整个查询过程,接下来笔者会用两篇文章来讲解整个过程,首篇文章次要会从框架的角度粗粒度地分析scan的全体流程,并不会涉及太多的细节实现。大多数看客通过首篇文章基本就可以初步了解scan的工作思路;为了能够从细节理清楚整个scan流程,接着其次篇文章将会在第一篇的基础上引入更多的实现细节以及HBase对于scan所做的基础优化。由于理解问题可能会有纰漏,期望可以一起探讨沟通,欢迎拍砖~ Client-Server交互规律 运维开发了很长一段时间HBase,经常有业务同学询问为什么客户端配置文件中没有配置RegionServer的地址信息,这里针对这种疑问简约的做下解释,客户端与HBase系统的交互阶段次要有如下几个步骤: 客户端首先会依据配置文件中zookeeper地址连接zookeeper,并读取//meta-region-server节点信息,该节点信息存储HBase元数据(hbase:meta)表所在的RegionServer地址以及访问端口等信息。用户可以通过zookeeper命令(get //meta-region-server)查看该节点信息。 依据hbase:meta所在RegionServer的访问信息,客户端会将该元数据表加载到本地并进行缓存。然后在表中确定待检索rowkey所在的RegionServer信息。 依据数据所在RegionServer的访问信息,客户端会向该RegionServer发送真正的数据读取恳求。服务器端接收到该恳求之后需要进行简单的处理,具体的处理流程将会是这个专题的重点。 通过上述对客户端以及HBase系统的交互分析,可以基本明确两点: 客户端只需要配置zookeeper的访问地址以及根名目,就可以进行正常的读写恳求。不需要配置集群的RegionServer地址列表。 客户端会将hbase:meta元数据表缓存在本地,因而上述步骤中前两步只会在客户端第一次恳求的时候发生,之后全部恳求都直接从缓存中加载元数据。假如集群发生某些变化导致hbase:meta元数据更改,客户端再依据本地元数据表恳求的时候就会发生特别,此时客户端需要重新加载一份最新的元数据表到本地。 -----------------此处应有华丽丽的分隔线---------------- RegionServer接收到客户端的get/scan恳求之后,先后做了两件事情:构建scanner体系(实际上就是做一些scan前的预备工作),在此体系基础上一行一行检索。举个不太合适但易于理解的例子,scan数据就和开发商盖房一样,也是分成两步:组建施工队体系,明确每个工人的职责;一层一层盖楼。 构建scanner体系-组建施工队 scanner体系的核心在于三层scanner:RegionScanner、StoreScanner以及StoreFileScanner。三者是层级的关系,一个RegionScanner由多个StoreScanner构成,一张表由多个列族组成,就有多少个StoreScanner担任该列族的数据扫描。一个StoreScanner又是由多个StoreFileScanner组成。每个Store的数据由内存中的MemStore和磁盘上的StoreFile文件组成,相对应的,StoreScanner对象会雇佣一个MemStoreScanner和N个StoreFileScanner来进行实际的数据读取,每个StoreFile文件对应一个StoreFileScanner,留意:StoreFileScanner和MemstoreScanner是整个scan的最终执行者。 对应于建楼项目,一栋楼通常由好几个单元楼构成(每个单元楼对应于一个Store),每个单元楼会请一个监工(StoreScanner)担任该单元楼的建筑。而监工一般不做具体的事情,他担任招募很多工人(

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档