HIVE2.1 vs impala

HIVE2.0增加了LLAP(低延迟分析处理),并在2.1版本进行了改进,相较于HIVE 1有了25倍的查询性能提升。LLAP以多线程方式采用内存进行计算。智能地将数据缓存到多台机器内存中,并允许所有客户端共享这些缓存的数据,同时保留了弹性伸缩能力。详见官网

  • LLAP采用缓存持久化查询来避免较长的启动时间;
  • 内存查询,并在所有SQL用户之间共享;
  • 细粒度的资源管理和占有,适合多用户高并发操作;

Carter Shanklin & Nita Dembla将其与另外一个SQL on Hadoop 查询引擎impala进行了比较

环境:相同硬件和数据集。其中impala通过CDH5.8版本引入,impala版本为2.6.0,Impala的运行时过滤功能已针对此测试中的所有查询启用。

数据集: HIVE在ORC格式下效果最好,impala在Parquet格式下效果最好,所以impala采用Parquet格式,采用snappy压缩。采用相同的分区方式。

查询:impala本意设计为与HIVE高度兼容,但是由于SQL奇偶校验问题,impala中出现了语法错误的查询。查询时间采用相同的计量标准。

运行时间比较
HIVE2.1 vs impala
impala中一些查询运行时间超过30分钟,而HIVE中不到1分钟。

比较在给定时间内完成查询的数量
HIVE2.1 vs impala
在30秒内impala稍微具有优势,但随时间的增加,HIVE的查询完成数量始终保持领先。这表明Impala在不太复杂的查询中表现良好,但随着查询复杂性的增加而变得困难。另一方面,随着LLAP的引入,Hive在简单查询中获得了良好的性能,同时保留了在复杂查询方面表现良好的能力。

综上所述,随着越来越多的应用部署于Hadoop之上,越来越多的复杂查询需求也随之产生,也伴随着成本的增加。HIVE LLAP降低了交互式SQL查询的成本,保证了复杂查询的性能,简化了查询架构。在该应用中优于impala。