继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

hbase查询解析

xpbob
关注TA
已关注
手记 152
粉丝 1.6万
获赞 380

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排序的存储模式来定位数据。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP