实时查询引擎 - 介绍总结

本文对比了四个主流实时查询引擎:Apache Drill、Facebook Presto、HAWQ和Cloudera Impala,在安装便捷性、内存使用、SQL兼容性和执行效率等方面进行了详细评测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  到目前为止,已经介绍了几个最主要的实时查询引擎,分别是:

  在这几个实时查询引擎中,个人感觉最易用的应属Impala,因为它跟CDH集成在一起,无论在安装、管理、使用上都非常方便,且与HIVE天然集成,数据共享,兼容性好。而最灵活的应属Drill和Presto, Drill可以针对文件、目录、HIVE表作数据分析查询。Presto则有各种各样的连接器, 可扩展性非常高。
  下面来对这几个组件进行一个简单的比较:

  • 安装方面:最快速最简单的当属Impala,因为Impala与CDH集成在一起,不需要另外安装,可以直接通过WEB界面添加服务完成安装。而Apache Drill也非常快捷,简单的更改配置文件,复制到每台服务器上即可。最复杂的当属HAWQ了,更改了Greenplum的存储方式,但其它没有变化,安装过程就一样的步骤多而麻烦了,不过HAWQ也可以通过Ambari图形界面安装。
  • 内存使用:大家都是基于内存运算来达到实时级别的。但当内存达到极限时的表现却各有不同。Drill会直接产生异常, Impala在有限的情况下(实际感受就没存在过)可以实现磁盘溢出运算,其它也是直接抛出异常。而Presto没有明确的表态,实际测试也没有产生过溢出异常。HAWQ跟Greenplum完全一样,可以在内存不出时,溢出到磁盘进行运算的。
  • SQL兼容性:作为对标准DML的支持,其实大家都差不多。不能执行DELETE,UPDATE,剩下就只有SELECT了。标准的GROUP, JOIN, LIMIT,HAVING, ORDER BY是必须支持的。余下的就看支持的扩展语法是否丰富,分析函数是否丰富,内置函数是否丰富了。而大家都是混大数据界的,分析函数那是多少都必须支持的。在以上三方面,最丰富的肯定当属HAWQ了,保留了Greenplum所有的功能,跟Oracle非常相似。其它几个也都支持了比较常用的一些,可以满足大部分情况使用。另外最值得一值的是, HAWQ还支持PL/java, PL/Perl,PL/pgSQL等过程语言。
  • SQL执行效率方面。下面通过一个简单的查询测试来看看吧:
 DrillPrestoImpalaHAWQ
数据加载(15970428行)  16.69s(INSERT SELECT方式)49s(COPY方式)
求总记录数48.71s,37.16s6s,1s1.14s,1.13s1.02s,1.07s
按category汇总求最大/小15.8s,18.6s9s,7s1.85s, 1.67s4.1s, 1.2s

  > 数据加载Drill,Presto直接使用Impala加载后的数据,不需要重复加载。且HAWQ与Impala的数据加载速率也没有可比性,执行方式完全不一样。
  > 每一个查询测试都执行了两次
  > 测试中总共有3个DataNode节点,但HAWQ只有2个Segment节点在运行。其它都是3个节点
  > 从以上简单的测试结果来看, Impala与HAWQ的执行效率都是非常快且不相上下的。其次Presto的执行效率也还行,而Drill。。。

  • 高可用性方面:最靠谱的当属Drill了,无主节点的设置,即使在战斗到只剩最后一个节点时,仍然可以继续使用。而其它三个组件都有弱点,Impala是Catalog,Statestore角色,Presto是兼用Discovery功能的Coordinator节点,HAWQ是Master主节点。虽然像HAWQ可以通过主备方式来避免,其它的也很少挂掉,且会自动重启。但这毕竟是它的软肋。

  至此,实时查询引擎系列就暂告段落了,有遗误的地方请大家留言告知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值