SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid

转自infoQ!html

 

根据 O’Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最普遍的语言。大部分项目都须要一些SQL 操做,甚至有一些只须要SQL。前端

本文涵盖了6个开源领导者:Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto,还加上Calcite、Kylin、Phoenix、Tajo 和Trafodion。以及2个商业化选择Oracle Big Data SQL 和IBM Big SQL,IBM 还没有将后者改名为“Watson SQL”。sql

(有读者问:Druid 呢?个人回答是:检查后,我赞成Druid 属于这一类别。)数据库

使用SQL 引擎一词是有点随意的。例如Hive 不是一个引擎,它的框架使用MapReduce、TeZ 或者Spark 引擎去执行查询,并且它并不运行SQL,而是HiveQL,一种相似SQL 的语言,很是接近SQL。“SQL-in-Hadoop” 也不适用,虽然Hive 和Impala 主要使用Hadoop,可是Spark、Drill、HAWQ 和Presto 还能够和各类其余的数据存储系统配合使用。

不像关系型数据库,SQL 引擎独立于数据存储系统。相对而言,关系型数据库将查询引擎和存储绑定到一个单独的紧耦合系统中,这容许某些类型的优化。另外一方面,拆分它们,提供了更大的灵活性,尽管存在潜在的性能损失。apache

下面的图1展现了主要的SQL 引擎的流行程度,数据由奥地利咨询公司Solid IT 维护的DB-Engines提供。DB-Engines 每个月为超过200个数据库系统计算流行得分。得分反应了搜索引擎的查询,在线讨论的说起,提供的工做,专业资历的说起,以及tweets。后端

 

来源:DB-Engines,2017年1月 http://db-engines.com/en/ranking缓存

虽然Impala、Spark SQL、Drill、Hawq 和Presto 一直在运行性能、并发量和吞吐量上击败Hive,可是Hive 仍然是最流行的(至少根据DB-Engines 的标准)。缘由有3个:服务器

  • Hive 是Hadoop 的默认SQL 选项,每一个版本都支持。而其余的要求特定的供应商和合适的用户;
  • Hive 已经在减小和其余引擎的性能差距。大多数Hive 的替代者在2012年推出,分析师等待Hive 查询的完成等到要自杀。然而当Impala、Spark、Drill 等大步发展的时候,Hive只是一直跟着,慢慢改进。如今,虽然Hive 不是最快的选择,可是它比五年前要好得多;
  • 虽然前沿的速度很酷,可是大多数机构都知道世界并无尽头。即便一个年轻的市场经理须要等待10秒钟来查明上周二Duxbury 餐厅的鸡翅膀的销量是否超过了牛肉汉堡。

在下面的图2中能够看出,相对于领先的商业数据仓库应用,用户对顶尖的SQL 引擎更感兴趣。并发

来源:DB-Engines,2017年1月 http://db-engines.com/en/rankingoracle

对于开源项目来讲,最佳的健康度量是它的活跃开发者社区的大小。以下面的图3所示,Hive 和Presto 有最大的贡献者基础。(Spark SQL 的数据暂缺)

来源:Open Hub https://www.openhub.net/

在2016年,ClouderaHortonworksKognitio 和Teradata 陷入了Tony Baer 总结的基准测试之战,使人震惊的是,供应商偏心的SQL 引擎在每个研究中都击败了其余选择,这带来一个问题:基准测试还有意义吗?

AtScale 一年两次的基准测试并非毫无根据的。做为一个BI 初创公司,AtScale 销售衔接BI 前端和SQL 后端的软件。公司的软件是引擎中立的,它尝试尽量多的兼容,其在BI 领域的普遍经验让这些测试有了实际的意义。

AtScale 最近的关键发现,包括了Hive、Impala、Spark SQL 和Presto:

  • 4个引擎都成功运行了AtScale 的BI 基准查询;
  • 取决于数据量、查询复杂度和并发用户数,每一个引擎都有本身的性能优点:
    • Impala 和Spark SQL 在小数据量的查询上击败了其余人;
    • Impala 和Spark SQL 在大数据量的复杂join 上击败了其余人;
    • Impala 和Presto 在并发测试上表现的更好。
  • 对比6个月以前的基准测试,全部的引擎都有了2-4倍的性能提高。

Alex Woodie 报告了测试结果,Andrew Oliver 对其进行分析

让咱们来深刻了解这些项目。

Apache Hive

在2016年,Hive 有100多人的贡献者。该团队在2月份发布了Hive 2.0,并在6月份发布了Hive 2.1。Hive 2.0 的改进包括了对Hive-on-Spark 的多个改进,以及性能、可用性、可支持性和稳定性加强。Hive 2.1 包括了Hive LLAP(”Live Long and Process“),它结合持久化的查询服务器和优化后的内存缓存,来实现高性能。该团队声称提升了25倍。

Apache Impala

2012年,Cloudera 推出了Impala,一个开源的MPP SQL 引擎,做为Hive 的高性能替代品。Impala 使用HDFS 和HBase,并利用了Hive 元数据。可是,它绕开了使用MapReduce 运行查询。

。。。

9月,Cloudera 发布了一项研究结果,该研究比较了Impala 和Amazon Web Services 的Redshift 列存储数据库。报告读起来颇有意思,虽然主题一向的须要注意供应商的基准测试。

Spark SQL

。。。

Apache Drill

2012年,由Hadoop 分销商的领导者之一MapR 领导的一个团队,提出构建一个Google Dremel 的开源版本,一个交互式的分布式热点分析系统。

2015年,两位关键的Drill 贡献者离开了MapR,并启动了Dremio,该项目还没有发布。

Apache HAWQ

。。。

Presto

Facebook 工程师在2012年发起Presto 项目,做为Hive 的一个快速交互的取代。在2013年推出时,成功的支持了超过1000个Facebook 用户和天天超过30000个PB级数据的查询。2013年Facebook 开源了Presto。

Presto 支持多种数据源的ANSI SQL 查询,包括Hive、Cassandra、关系型数据库和专有文件系统(例如Amazon Web Service 的S3)。Presto 的查询能够联合多个数据源。用户能够经过C、Java、Node.js、PHP、Python、R和Ruby 来提交查询。

。。

其余项目

pass

相关文章
相关标签/搜索