之前对于使用Phoenix查询Hbase大表数据一直卡死,于是搁置了好久,昨晚终于尝试了一下,完美搞定,本节文章来使用4种方法对比Hbase查询性能。
查询数据量为1.8亿+。
1.基本理论
HBase是一个分布式的基于列存储的非关系型数据库。
HBase不是关系型数据库,而是一个在hdfs上开发的面向列的分布式数据库,不支持sql。
HBase统计使用count。查询按照rowkey查询,适合存储结果,不适合做sum、count、表连接等复杂查询,而SQL则适合多表连接,查询组合等。
现有工具有很多Hive,Tez,Impala,Shark/Spark,Phoenix等。今天主要记录Phoenix。
phoenix,由saleforce.com开源的一个项目,后又捐给了Apache。它相当于一个Java中间件,帮助开发者,像使用jdbc访问关系型数据库一些,访问NoSql数据库HBase。
phoenix,操作的表及数据,存储在hbase上。phoenix只是需要和Hbase进行表关联起来。然后再用工具进行一些读或写操作。
其实,可以把Phoenix只看成一种代替HBase的语法的一个工具。
2.查询方式
第一种:原生Hbase查询时间
Hbase查询时间为3856秒大约1小时7分钟
第二种:Hbase查询优化
每隔一千万查询一次:
间隔查询3372.5740秒,大约耗时:56分钟。
第三种:协处理器
首先需要配置:hbase-site.xml
耗时:1874188毫秒=1874.188s秒,大约31分钟。
第四种:Phoenix查询时间
需要设置Phoenix中的hbase-site.xml时间配置:
Phoenix查询时间为2015.033秒,大约33分钟左右。
3.总结
综上可得出,速度快慢:协处理器>Phoenix查询>间隔count>普通count>全表scan。