hbase查找数据流程理解

整体hbase 查找数据流程以hbase1.2.6 为例子

1 跟进zookeeper 获取对应的meta 表位置,meta 表位置只有1个在zookeeper 的目录是 /hbase/meta-region-server

    问题:为什么meta 表 只有一个位置?

    解答:和之前的hbase 寻址流程比 少了一次查询,并且一个meta 表中存储的regin信息足够用了,比如默认的一个region 是128M,meta 表中的信息一条不会太大,可以按照一条1kb 来计算,大家可以计算一下可以存储多少条,一条 就代表一个regionserver 信息

2 找到meta 表之后 是 如何找到 你要查找的这个rowkey 对应的 regionserver 呢

meta 表的rowkey 是以表名+startrowkey + 时间+md5 (这块大家可以具体百度一下)

查找rowkey 对应的region 这块逻辑 我认为hbase 的设计 就比较烧脑了

首先大家可以看看hbase 的反向查询api 有助于下方的理解

查找rowkey 对应的regionserver  是跟据hbase 的反向查询(这块会把一个范围内的数据 都查找出来)并取第一条记录

问题:如果根据hbase 反向查询 会不会查询出好多数据?

解答:如果按照正常逻辑会查询出一大堆的数据 这样性能肯定不好,hbase 在这里面做了比较牛逼的操作,规定了是大量查询还是小量查询,对应hbase 里的setSmall api ,这里大家可以具体了解这个small 的实现有助于更好的理解hbase 查询逻辑

3 找到了对应的regionserver 如何查找具体的数据呢

连接到具体的regionserver 里先从memstore 找数据,找不到会在从StoreFile 读取数据

以上3步,第2步,第3步 都会有缓存,如果调优的话大家可以看看hbase 的缓存管理器是如何选择的

 

你可能感兴趣的:(大数据)