亚马逊AWS官方博客

Amazon EMR 推出适用于 Apache Spark 的 EMR Runtime

Amazon EMR宣布推出了适用于 Apache Spark 的 Amazon EMR Runtime,这是一种针对 Apache Spark 进行了性能优化的环境,此runtime在 Amazon EMR 集群上默认处于活动状态。适用于 Spark 的 EMR runtime速度最快可达 EMR 5.16 的 32 倍,并且与开源 Spark API实现了 100% 的兼容性。这使得工作负载运行速度更快,无需对应用程序进行任何更改即可节省计算成本。自 EMR 5.24 起,Amazon EMR 不断改进 Spark runtime, 优化 Spark 性能一文介绍了这些改进。EMR 5.28 推出了多项新的改进。为了量化这些改进,我们将 EMR 5.16(采用开源 Apache Spark 版本 2.4)与 EMR 5.28(采用与 Apache Spark 版本 2.4 兼容、适用于 Apache Spark 的 EMR runtime)进行了对比。我们使用了 3TB 级的 TPC-DS 基准查询,运行在一个 6 节点的 c4.8xlarge EMR 集群上,数据存储在 Amazon S3 中。衡量性能提升的指标包括:查询执行总时间提升的几何平均值以及所有查询的查询执行总时间。结果表明,性能明显提升 – 几何平均值提高了 2.4 倍,总体查询运行速度提高了 3.2 倍。

下图展示了104 TPC-DS 查询(注1)总运行时间的性能提升情况。EMR 5.28 的运行时间更短(更好)。

下图展示了 104 TPC-DS 查询几何平均值的性能提升情况。EMR 5.28的几何平均值更低(更好)。

单独研究每次查询的提升情况时发现,长时间运行的查询性能提升最明显。

下图展示了与 EMR 5.16 相比,EMR 5.28 中长时间运行的查询的性能提升情况(在 EMR 5.16 中运行时间超过 130 秒的查询)。在此对比结果中,数值越高表示性能越好。

下图展示了与 EMR 5.16 相比,EMR 5.28 中短时间运行的查询的性能提升情况(在 EMR 5.16 中运行时间少于 130 秒的查询)。同样,数值越高表示性能越好。

如查询 72 所示,对于运行时间超过 130 秒的查询,其速度最多可提高 32 倍。对于运行时间少于 130 秒的查询,其速度最多可提高 6 倍,平均提高了 2 倍。

Spark 有着广泛的分析使用案例,包括从大规模转换到流式处理、数据科学以及机器学习等。客户选择在 EMR 上运行 Spark,是因为 EMR 提供了稳定的最新开源社区创新、Amazon S3 高性能存储、以及由 Spot 实例 Auto Scaling 功能带来的成本节约。EMR 还通过托管式 EMR Notebooks笔记本范围的库Git 集成实现了易用性,并支持通过集群外 Spark History Services 轻松进行调试和监控。结合runtime性能提升和使用 AWS Lake Formation 带来的精细访问控制,Amazon EMR 成为了运行 Apache Spark 的客户的绝佳选择。

借助对 Apache Spark的各项性能优化,您能够从更好的查询性能中获益。我们将继续推出更新,不断改进 Amazon EMR 上的 Apache Spark 性能,敬请关注。要随时掌握最新动态,请订阅大数据博客的 RSS 源,了解更多 Apache Spark 优化、配置最佳实践和调整建议方面的信息。

注1:

TPC-DS是一个面向决策支持系统(decision support system)的包含多维度常规应用模型的决策支持基准,包括查询(queries)与数据维护,TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。

更多信息请参考:http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-ds_v2.1.0.pdf

 

 


关于作者

Joseph Marques 是 Amazon Web Services 负责 EMR 的首席工程师

 

 

 

 

Peter Gvozdjak 是 Amazon Web Services 负责 EMR 的高级工程经理