在YARN之前,Hadoop仅适用于离线处理场景。基于实时性的需求,各个机构纷纷研发了自己的流处理框架,这次我们说的是两SQL-on-Hadoop项目的对决,同时也是两家知名Hadoop解决方案提供商的比拼——Impala vs. Stinger。
Singer:Stinger最早出现在Hive 0.11中(HDP 1.3),共有3个阶段目标,其中第一和第二阶段已经交付。通过Hortonworks的介绍了解到,第一阶段交付的是35-45倍的所有类型分析提速,第二阶段交付的则是性能上额外5-10倍的提升。
Impala:Impala发布于2012年末,Google Dremel的开源实现,由知名Hadoop解决方案供应商Cloudera开发,是当下最为流行的流处理框架之一。Cloudera研发这头藏羚羊的初衷很明了——提高Hive SQL查询的速度,在1.0测试版发布时更声称比Hive快3-90倍,而在Impala正式版发布后,Cloudera更称其并发执行客户端处理速度甚至超越了单机的Hive。
Mesos、YARN等集群资源管理工具促成了Stinger与Impala的直接竞争,也就有了Cloudera这次基于TPC-DS的 基准测试。
Impala vs. Stinger
测试对比版本是Impala 1.1.1与Hive 0.12(集成了Stinger),Hive运行在ORCFile数据集之上,Impala则使用了Parquet存储相同的数据。为了让Hive得到最佳性能,Cloudera还将TPC-DS查询转换成SQL-92 join,并且手动优化了join顺序,指定了分区字段,Impala也做了同样的优化。
数据大小是3TB,使用了典型的5 Hadoop数据节点配置。查询也使用了多种类型,也包含了多种标准join及聚合,还使用了复杂的多级聚合和子查询。
测试得出的结果是Impala比Hive快6-69倍不等,类型包括以下几种:
写在最后
到这里,大家或许会有疑问,比Hive快十倍甚至是百倍的基准测试已随处看见,甚至是这些工具之间的对比,比如下面这两个:
HAWQ对比Hive及Impala(更多详情见 论文)
Shark对比Hive及Impala(更多详情请见博客)
那么这样的对比究竟还有什么意思?其实,这些都该归结于YARN推出后的机遇和挑战:机遇,新的资源管理器让不同类型的处理框架可以运行在同一个Hadoop集群上,在这个多金繁荣的生态圈里,每多占一点份额,其利益不言而喻;挑战,YARN的新特性让更多天然集成工具的性能又获提升,比如说Stinger,因此处于集成劣势上的他们不得不跳出来吆喝几句,也就出现了这个与Hive,其实是与Stinger的性能对比。由此可见,虽然在2.0版本后Hadoop生态圈变得更加繁华,但是其中的压力也是不言而喻。