工程的博客

在云端测试大数据SQL平台bob体育客户端下载

2017年7月12日 工程的博客

分享这篇文章
为了更深入地了解这些基准,观看网络研讨会由雷诺兹·辛主演。

在选择大数据平台时,性能往往是一个关键因素。bob体育客户端下载考虑到SQL是大数据分析的通用语言,我们希望确保我们提供的是我们公司中性能最好的SQL平台之一bob体育客户端下载bob体育亚洲版统一分析平台bob体育客户端下载

在这篇博文中,我们将进行比较Databricks运行时3.0(包括Apache Spark和我们的DBIO加速器模块),在云中使用行业标准使用开源Apache Spark和Prestobob下载地址TPC-DS v2.4基准。除了云设置之外,Databricks Runtime在10TB规模上与最近的版本进行了比较Cloudera基准在Apache Impala上使用本地硬件。在这种情况下,Cloudera发布的Impala结果中只报告了104个TPC-DS查询中的77个。

结果总结表明:

  1. 在相同的硬件规格下,Databricks Runtime 3.0在AWS上的性能比普通Spark高出5倍。
  2. Databricks的表现比Presto高出8倍。Presto只能运行104个查询中的62个,而Databricks可以运行所有查询。
  3. 在Cloudera的报告中,Databricks的性能不仅比内部部署的Impala高出3倍,而且与内部部署的固定物理磁盘相比,它还受益于S3的存储弹性。

要重新生成这个基准测试,您可以从在这里

TPC-DS

TPC-DS由第三方委员会创建,是衡量决策支持解决方案性能的事实上的行业标准基准。根据其自己的主页,它将决策支持系统定义为那些检查大量数据,回答现实世界的业务问题,执行各种操作需求和复杂性的SQL查询(例如,特别,报告,迭代OLAP,数据挖掘),并以高CPU和IO负载为特征的系统。

这个基准测试包括104个查询,这些查询执行了大部分SQL 2003标准——99个TPC-DS基准测试查询,其中4个查询有两个变体(14、23、24、39),“s_max”查询执行最大的表store_sales的完整扫描和聚合。如在之前的博客文章Spark SQL是少数几个能够运行所有TPC-DS查询而无bob下载地址需修改的开源SQL引擎之一。

Databricks Runtime vs Vanilla Apache Spark

我们使用最新的Databricks Runtime 3.0版本进行了这个实验,并将其与另一个流行的AWS云数据平台上的Spark集群设置进行了比较。bob体育客户端下载Databricks Runtime增加了Spark的IO层(DBIO),可以优化对云存储(在这里是S3)的访问。

最佳Spark性能的云存储与Spark on-prem HDFS不同,因为云存储IO语义可能会引入网络延迟或文件不一致——在某些情况下不适合大数据软件。但有了Spark在Databricks上,我们消除了这两个。

如上所述,Spark在Databricks上的总运行时间大约提高了5倍,提高了4倍几何平均数.接下来,我们将解释基准测试设置的更多细节。

硬件配置:我们在Amazon EC2上使用了以下设置:

  • 机器类型:11r3。Xlarge节点(10工位1司机)
  • CPU核数:44个虚拟核(22个物理核)
  • 系统内存:335gb
  • shuffle的总本地磁盘空间:880 GB(基准数据存储为周日)t在S3)
  • 网络性能被亚马逊描述为“中等”

数据集:TPC-DS 1000比例因子,在S3上。我们之所以选择这一比例因子而不是10000,是因为与下一部分相比,Presto在扩大比例方面存在严重问题。

查询重写:没有执行查询重写。两种类型的Spark SQL都能够运行全部104个查询。

配置调优:我们在Databricks上使用开箱即用的配置运行基准测试,并在AWS集群上进行额外的手动调优。我们最初使用默认配置在竞争平台上运行这个基准测试,但发现性能低于我们的预期。bob体育客户端下载然后,我们进行了一些手动调优,以匹配Databricks上的配置,以便AWS上的Spark性能更好。可以找到非databricks平台上的附加配置bob体育客户端下载在这里而且在这里

为了进一步分析查询结果,我们还将查询分为三类:

  1. 交互式查询:该类别的查询在1分钟内完成。在这个类别中,Databricks Runtime 3.0要快3倍。
  2. 报告查询:此类别的查询在3分钟内完成。在这个类别中,Databricks Runtime 3.0要快4倍。
  3. 深度分析查询:长时间运行的查询可能需要一个小时或更长时间。在这个类别中,Databricks Runtime 3.0要快5倍。

由于交互式查询受到元数据发现延迟的限制,我们只观察到3倍的加速,而报告和深度分析查询则从优化的DBIO中获益良多。DBIO的未来版本还将大幅改善元数据发现的延迟,从而进一步改善交互式查询。

Databricks Runtime vs Presto

使用相同的硬件配置,我们还比较了Databricks Runtime和AWS上的Presto,使用相同的供应商来设置Presto集群。

硬件配置:同上(11r3。超大节点)

数据集:TPC-DS 1000比例因子,在S3上

查询重写:由于缺乏对汇总的分组功能的支持,我们不得不为Presto重写一些查询。即使做了一些小的重写,在Presto上也只能完成62个查询。其余的要么使系统崩溃,要么没有返回结果。这就解释了为什么Presto的总运行时间比上一节中普通Spark的总运行时间要小,因为Presto的总运行时间没有考虑到失败的查询。

如上所示,Spark SQL on Databricks完成了所有104个查询,而Presto完成了62个查询。仅比较Presto能够运行的62个查询,Databricks Runtime的几何平均性能比Presto好8倍。Databricks Runtime比Presto快8倍,具有更丰富的ANSI SQL支持。

云数据库vs Apache Impala On-prem

Apache Impala是大数据领域另一个流行的查询引擎,主要由Cloudera客户使用。Cloudera发布了Impala引擎本身的基准数据。的最近的基准两个月前由Cloudera发布,104个查询中只运行了77个。

在这个实验中,我们问自己:云设置中的Databricks Runtime与物理硬件上的Impala结果相比如何?如果我们将使用Databricks的开箱即用配置与由产品背后的工程团队调优的Impala进行比较,并使用精选查询集,结果会怎样?另外,Spark在S3上的性能与Impala在物理磁盘上的性能如何?本节将介绍本实验的结果。

硬件配置:

砖运行时 Cloudera黑斑羚
CPU核数 144 (288 AWS vcpu) 280
内存(GB) 2196 1792
本地磁盘(TB) 68 112
数据存储 S3(分离的存储和计算) HDFS(本地磁盘)
机器的细节 18 cloud i3.4 .4xlarge 7个on-prem节点

数据集:对于Databricks, TPC-DS 10000比例因子,在S3上。对于Impala,在HDFS上。

查询重写:没有,但是Cloudera团队选择的77个查询集排除了TPC-DS中一些最苛刻的查询。

配置调优:Databricks上没有;我们使用开箱即用的配置。不知道Cloudera基准测试中做了什么,因为没有报告(查看评论)。

所有104个查询都在19990秒内以10000的比例因子完成。下图比较了Cloudera在报告中选取的77个查询的运行时:

在我们将cpu数量作为标准化因素的情况下,Databricks Runtime在云中使用商用硬件,比Impala的效率高出3倍:

Databricks Runtime的性能比Cloudera在Impala上发布的数字更好,在Impala的工程团队选择的查询中,使用只有一半物理CPU核心的集群。这些数字本身没有突出的一个重要因素是,Databricks实验是针对S3中的数据运行的,使用解耦合的存储和计算,与本地磁盘相比,这增加了弹性和管理的便便性,就像Impala基准测试中所做的那样。

在一个之前的博客文章比较S3和HDFS我们得出的结论是,S3拥有的总成本要低得多,而HDFS在每个节点上可能有更好的性能。这一基准测试结果表明,通过我们的优化,可以获得两全其美的结果:云的灵活性和更低的TCO,比预置性能更好,以及更广泛的ANSI SQL支持集。

结论

这篇博客报告了我们对Databricks Runtime 3.0与其他大数据引擎(包括云中的Apache Spark和Presto)进行比较的基准测试。即使在AWS上的Spark中改进了Spark配置,在相同的硬件规格下,Databricks Runtime的性能也比普通Spark高出5倍。

与Presto相比,Databricks Runtime的性能提高了8倍,同时能够运行所有查询。Presto只能运行104个查询中的62个,而Spark在普通开源版本和Databricks中都能运行104个未修改的查询。bob下载地址

除了云计算结果之外,我们还将我们的平台与Cloudera最近的Impala 10TB规模结果集进行了比较。bob体育客户端下载虽然结果来自预部署集群,但Databricks Runtime在报告中对相同数量的CPU内核进行查询时,性能比预部署Impala好3倍。Databricks Runtime测试使用S3作为存储,具有额外的云弹性,因此TCO比on-prem低。

为了更深入地了解这些基准,观看网络研讨会由雷诺兹·辛主演。

为了利用Databricks Runtime 3.0中的最新性能优化,注册一个Databricks帐户

免费试用Databricks
看到所有工程的博客的帖子