Hive Impala Presto, comparison of performance

测试环境如下:

presto-env
其中关于impala和Presto的内存配置:

  • Impala Daemon 内存限制mem_limit为1GB
  • Presto的config.properties 配置文件中task.max-memory=1GB。

另外,由于内存有限,每次测试时Impala和Presto都没有同时开启。
总体测试表明,Presto的性能比Impala稍逊,在数据量巨大、查询比较复杂时,Impala和Presto的性能表现都不怎么样,比Hive也就快了2、3倍的样子
由于生产环境下,除了性能之外,还有并发度、稳定性、适应性等多种因素需要考虑,所以以上测试结果仅供参考。
以下是具体测试结果:

一、1百万条记录,HDFS文件大小600MB时的查询速度

在表记录数不多时,Impala和Presto都表现出比较好的查询性能,其中Impala的查询效率大约为Hive的9~50倍,Presto的查询效率大约为Hive的8~??倍(由于Presto的查询时间只精确到秒,在最简单的select * from xxx limit 5的查询中,显示时间为0秒)。
presto600mb

二、1千万条记录,HDFS文件大小6GB时的查询速度

在表记录数比较多时,Impala的查询效率大约为Hive的7~10倍,Presto的查询效率大约为Hive的4~30倍。
persto6gb

三、1亿条记录,HDFS文件大小60GB时的查询速度

在表记录数特别多时,Impala的查询效率大约为Hive的3~60倍,Presto的查询效率大约为Hive的2~180倍。
presto60gb


Data Warehouse For Ever原创文章,转载请注明出处

Leave a comment ?

12 Comments.

  1. 我想问一下,
    “2~180倍”是怎么得出的?怎么差距这么大?

  2. @muxueqz
    不同的查询语句造成的。select * from XXX limit n这种查询,hive和presto的执行时间差距太大了,当数据量达到60GB的时候,hive是要map扫描全部文件的,而presto执行类似语句只需要1秒。这种情况下时间就是180倍。

  3. 请问配置presto需不需要单独安装hive和Hadoop CDH4啊?
    我没装,总是提示连接hive metastore失败,是怎么回事啊?

  4. 要的。presto是基于hive和hdfs的查询引擎。

  5. “要的。presto是基于hive和hdfs的查询引擎。”这就有点恶心了,为什么还有依赖hive?

  6. 因为Presto的定位不是替代hive,只是hive的一个补充,从功能上看,Presto没有建表、插入数据等功能,所以,也没办法替代hive。

  7. 大神再测一下Apache Tajo的性能呗

  8. 谢谢提醒,我对Tajo不是很了解,看起来是一个替代Hive的东西,不过它社区活跃度实在太低了,我都怀疑它是否能坚持下去。现在支持的功能也太有限,没啥可测的,等下一版出来再说吧。

  9. 如果推荐新上项目,是推荐alibaba的mdrill,还是presto或者Impala?

  10. mdrill是用于adhoc查询的,不能直接用hdfs的数据进行查询,要build索引,并且还有不少的二次开发工作,比较适用于对查询响应速度有较高要求的场景;如果是一般的场景,推荐使用Impala。

  11. 博主,你这是select * 操作还是?
    具体查询sql贴一些比较合适

  12. select * from XXX limit n 这种查询也是瞬间完成的,怎么会出现博主这种情况?hive的select * 操作不会执行map/reduce的

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>