hbase 为什么查询比较快


第一、数据分区存储(region)

  通过rowkey可以快速地位到在那个region上,位置信息保存在hbase的meta表里。

 每次查询都会有location cache的,所以htable里面的Hconnection 初始化的时候访问速度相对来说稍慢,客户端缓存截图如下。

 随着数据越来越大,meta表的查询有可能遇到瓶颈,建议单独独立出成一个meta server。

(备注:一个meta表的一条记录大概为1k)。

 

第二、hbase的数据格式 HFile V2 (HFile V1代码已经出hbase版本删除了)




B、查询数据block的次数和HFile内部数据分开+索引分块


   

1、bloomfilter改进查找次数

2、hbase的三维顺序,按照rowkey,column,ts进行排序,rowkey和column是升序,

ts是降序

3、对于一次随机读block的访问顺序是bloomblock(多次) 、indexblock(1次) 、datablock(1次)

        分块+分级索引(RootDataIndex、 IntermediateLevel ROOT INDEX 【备选如果HFile size 过大,就启用】、Leaf index block)

   bloom filter介绍:



另外hbase各种过滤器在我们查询中用到,大家了解下的:

   1、Comparision Filters
     1.1  RowFilter
1.2 FamilyFilter
     1.3 QualifierFilter
     1.4 ValueFilter
     1.5 DependentColumnFilter
2、Dedicated Filters
     2.1 SingleColumnValueFilter
     2.2 SingleColumnValueExcludeFilter
     2.3 PrefixFilter
     2.4 PageFilter
     2.5 KeyOnlyFilter
     2.6 FirstKeyOnlyFilter
     2.7 TimestampsFilter
     2.8 RandomRowFilter
3、Decorating Filters
     3.1  SkipFilter
     3.2 WhileMatchFilters

展开阅读全文

没有更多推荐了,返回首页