为了账号安全,请及时绑定邮箱和手机立即绑定

hbase查询解析

标签:
NoSql

hbase查找流程图

图片描述

流程说明

从zk获取meta地址

客户端查询一个数据,先根据zookeeper获取meta表所在的region信息,meta表里存着region的各种信息,但是他也是在region里的,会被一个regionserver管理,信息存放在节点meta-region-server中。

查找数据对应的regionserver

region表中存放着所有region的信息,key是由表名,起始行,时间,散列值组成的,column有server,serverstartcode,regioninfo。server中存放的是regionserver的ip和port。regioninfo中有表名,startkey,endkey。根据这些信息可以知道你查的数据的regionserver。

hbase支持三种查询,rowkey,rowkey范围,全表扫描。根据startkey和endkey。保证了rowkey和rowkey范围的需求,剩下的就是全表扫描了。

查询regionserver的地址

每个regionserver的数据是两部分组成的,一部分在内存中,称为memstore,查询memstore的过程叫做memstorescan。一部分存在文件中,称为storefile,查询storefile的过程教程storefilescan。

storefile的查询

hbase的文件存储格式如下

data meta fileinfo dataindex metaindex trailer

trailer记录fileinfo,dataindex,metaindex的偏移量。根据trailer可以找到dataindex。dataindex存放的是data数据的偏移量。

data块的存储如下

magic key value key value key value

这里的存储是按照key的字典顺序存的。

小结

hbase的查询是一个多级查找索引的过程,根据zk找meta,根据meta找regionserver。犹豫hbase lsm的数据结构,数据分散成两块,一部分在内存,一部分在文件。此时就分成了两部分查询任务,在文件查询的过程中,先读取trailer找到dataindex,根据dataindex再找到data模块的索引,然后根据data里rowkey排序的存储模式来定位数据。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.6万
获赞与收藏
380

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消