亚马逊 EMR 推出对亚马逊 EC2 C7g (Graviton3) 实例的支持,将 Spark 工作负载的成本性能提高 7-13%

亚马逊 EMR 提供一项托管服务,可使用 Apache Spark、Hive、Presto、Trino、HBase 和 Flink 等开源框架轻松运行分析应用程序。Spark 和 Presto 的亚马逊 EMR 运行时 包括优化,与开源 Ap ache Spark 和 Prest o 相比,这些优化提供的性能提升是开源 Apache Spark 和 Presto 的两倍多。

在亚马逊 EMR 版本 6.7 中,您现在可以使用使用 A WS Graviton3 处理 器的亚马逊弹性计算云 (亚马逊 EC2)C7g 实例。 这些实例将在 Amazon EMR 上运行 Spark 工作负载的性价比比上一代实例提高了 7.93— 13.35%,具体取决于实例大小。在这篇文章中,我们描述了我们如何估计性价比优势。

使用 EC2 C7g 实例时的亚马逊 EMR 运行时性能

我们使用带有 C7g 实例的 Apache Spark(兼容 Apache Spark 3.3)的亚马逊 EMR 运行时,在亚马逊 EMR 6.9 上运行了 TPC-DS 3 TB 基准测试。数据存储在 Amazon Simple Storage Servic e (Amazon S3) 中,并将结果与上一代实例系列中的等效 C6g 集群进行了比较。我们使用 TPC-DS 3 TB 基准测试查询的总查询运行时间和查询运行时的几何平均值来衡量性能改进。

我们的结果显示,与具有 C6g 实例的等效 EMR 集群相比,使用 C7g 的 EMR 群集的总查询运行时性能提高了 13.65— 18.73%,几何平均值提高了 16.98— 20.28%,具体取决于实例大小。在比较成本时,我们观察到使用 C7g 的 EMR 集群的成本与 C6g 的等效集群相比降低了 7.93— 13.35%,具体取决于实例大小。我们没有对 C6g xlarge 实例进行基准测试,因为它没有足够的内存来运行查询。

下表显示了使用 Amazon EMR 6.9 运行 TPC-DS 3 TB 基准测试查询与同等的 C7g 和 C6g 实例 EMR 集群相比的结果。

Instance Size 16 XL 12 XL 8 XL 4 XL 2 XL
Total size of the cluster (1 leader + 5 core nodes) 6 6 6 6 6
Total query runtime on C6g (seconds) 2774.86205 2752.84429 3173.08086 5108.45489 8697.08117
Total query runtime on C7g (seconds) 2396.22799 2336.28224 2698.72928 4151.85869 7249.58148
Total query runtime improvement with C7g 13.65% 15.13% 14.95% 18.73% 16.64%
Geometric mean query runtime C6g (seconds) 22.2113 21.75459 23.38081 31.97192 45.41656
Geometric mean query runtime C7g (seconds) 18.43905 17.65898 19.01684 25.48695 37.43737
Geometric mean query runtime improvement with C7g 16.98% 18.83% 18.66% 20.28% 17.57%
EC2 C6g instance price ($ per hour) $2.1760 $1.6320 $1.0880 $0.5440 $0.2720
EMR C6g instance price ($ per hour) $0.5440 $0.4080 $0.2720 $0.1360 $0.0680
(EC2 + EMR) instance price ($ per hour) $2.7200 $2.0400 $1.3600 $0.6800 $0.3400
Cost of running on C6g ($ per instance) $2.09656 $1.55995 $1.19872 $0.96493 $0.82139
EC2 C7g instance price ($ per hour) $2.3200 $1.7400 $1.1600 $0.5800 $0.2900
EMR C7g price ($ per hour per instance) $0.5800 $0.4350 $0.2900 $0.1450 $0.0725
(EC2 + EMR) C7g instance price ($ per hour) $2.9000 $2.1750 $1.4500 $0.7250 $0.3625
Cost of running on C7g ($ per instance) $1.930290 $1.411500 $1.086990 $0.836140 $0.729990
Total cost reduction with C7g including performance improvement -7.93% -9.52% -9.32% -13.35% -11.13%

下图显示了在 C7g 2xLarge 实例上观察到的与同等 C6g 实例相比的每项查询的改进。

基准测试方法

本文中使用的基准测试源自行业标准 TPC-DS 基准测试,使用来自 Spark SQL 性能测试 GitHub 存储库的查询,并应用了以下修复

我们通过将每小时成本乘以集群中的实例数量和在集群上运行查询所花费的时间来计算 TCO。我们在美国东部(弗吉尼亚北部)地区对所有实例都使用按需定价。

结论

在这篇文章中,我们描述了如何估算将 Amazon EMR 与 C7g 实例相比使用同等的上一代实例所带来的性价比优势。将这些新实例与 Amazon EMR 配合使用,可将成本效益再提高 7— 13%。


作者简介

AI MS Al MS 是亚马逊网络服务亚马逊 EMR 的产品经理。

Kyeonghyun Ryoo 是亚马逊网络服务公司的 EMR 软件开发工程师。他主要为内部团队和客户设计和构建自动化工具,以最大限度地提高他们的生产力。工作之余,他是一位退休的职业游戏世界冠军,他仍然喜欢玩电子游戏。

孙宇洲 是亚马逊网络服务公司EMR的软件开发工程师。

Steve Ko once 是亚马逊网络服务 EMR 的工程经理。