亚马逊 EMR 推出对亚马逊 EC2 M6A、R6A 实例的支持,将 Spark 工作负载的成本性能提高 15-50%

作者: Al MS Kevin Ryoo | 2022

亚马逊 EMR 提供一项托管服务,可使用 Apache Spark、Hive、Presto、Trino、HBase 和 Flink 等开源框架轻松运行分析应用程序。 Spark Presto 的亚马逊 EMR 运行时 包括优化, 与开源 Apache Spark 和 Presto 相比,性能提高了 2 倍以上。

在亚马逊 EMR 版本 6.8 中,您现在可以使用使用第三代 AMD EPYC 处理器的 亚马逊弹性计算云 (亚马逊 EC2)实例,例如 M6A 和 C6A。与上一代实例相比,这些实例将在 Amazon EMR 上运行 Spark 工作负载的价格性能提高了 15-50%。在这篇博客文章中,我们描述了我们如何估算这种性价比优势。

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

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

我们的结果显示,与使用 M5a 实例的等效 EMR 集群相比,使用 m6a 的 EMR 集群的总查询运行时性能提高了 23.6% 到 50.3%,几何平均值提高了 22.8-52.4%。在比较成本时,我们发现使用m6a的EMR集群的成本比使用m5a的等效集群降低了23.2%至41.4%。M6A 48 XL 和 32 XL 实例未经过基准测试,因为 M5A 一代没有提供同等大小。

下表显示了使用亚马逊 EMR 6.8 在等效的 m6a 和 m5a 实例 EMR 集群上运行 TPC-DS 3 TB 基准测试查询的结果。

Instance Size 24 XL 16 XL 12 XL 8 XL 4 XL 2 XL XL
Total size of the cluster (1 Leader + 5 core nodes) 6 6 6 6 6 6 6
Total query runtime on M5A (seconds) 6624.1713838714 5466.7251180433 5269.0578151495 5366.1486275129 7753.6218015794 12118.0922180235 21070.6905510002
Total query runtime on M6A (seconds) 3295.2894058371 3063.7807673078 3399.1509249577 3482.8401591909 4906.2216891762 9184.4366036450 16107.9707619002
Total query runtime improvement with M6A 50.25% 43.96% 35.49% 35.10% 36.72% 24.21% 23.55%
Geometric mean query runtime M5A (sec) 51.1422829354 40.9550798753 38.4890223194 35.3863834186 44.8454957416 61.0454658020 92.6414502105
Geometric mean query runtime M6A (sec) 24.3406154481 22.3484713891 22.9913163520 23.0351017440 28.2855683398 46.4363267349 71.5498816854
Geometric mean query runtime improvement with M6A 52.41% 45.43% 40.27% 34.90% 36.93% 23.93% 22.77%
EC2 M5A instance price ($ per hour) $4.12800 $2.75200 $2.06400 $1.37600 $0.68800 $0.34400 $0.17200
EMR M5A instance price ($ per hour) $0.27000 $0.27000 $0.27000 $0.27000 $0.17200 $0.08600 $0.04300
(EC2 + EMR) M5A instance price ($ per hour) $4.39800 $3.02200 $2.33400 $1.64600 $0.86000 $0.43000 $0.21500
Cost of running on M5A ($ per instance) $8.09253 $4.58901 $3.41611 $2.45352 $1.85225 $1.44744 $1.25839
EC2 M6A instance price ($ per hour) $4.14720 $2.76480 $2.07360 $1.38240 $0.69120 $0.34560 $0.17280
EMR M6A price ($ per hour per instance) $1.03680 $0.69120 $0.51840 $0.34560 $0.17280 $0.08640 $0.04320
(EC2 + EMR) M6A instance price ($ per hour) $5.18400 $3.45600 $2.59200 $1.72800 $0.86400 $0.43200 $0.21600
Cost of running on M6A ($ per instance) $4.74522 $2.94123 $2.44739 $1.67176 $1.17749 $1.10213 $0.96648
Total cost reduction with M6A including performance improvement -41.36% -35.91% -28.36% -31.86% -36.43% -23.86% -23.20%

下图显示了在 M6a 2XL 实例上观察到的每次查询与同等 M5a 版本相比的改进。我们观察到,与 M5a 实例集群相比,在 m6a 实例集群上执行两个查询所需的时间更长。在 4 个 XL 实例集群上,第 91 季度的回归率高达 6.64%,第 55 季度的倒退幅度高达 1.86%。

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

与同等的 R5A 实例相比,R6A 实例在运行 Apache Spark 工作负载时表现出类似的性能改进。由于 R5A 实例没有 32XL 和 48XL 大小可用,因此未对 R6A 32XL 和 48XL 实例进行基准测试。我们的结果显示,实例系列中七种不同实例大小的总查询运行时间提高了16—58.22%,几何平均值提高了20.04—59.59%。在比较成本时,我们观察到,与 R5A EMR 实例集群相比,R6A 实例 EMR 集群的成本降低了 15.85—-50.07%。

下表显示了使用亚马逊 EMR 6.8 在同等的 R6A 和 R5A 实例 EMR 集群上运行 TPC-DS 3 TB 基准测试查询的结果。

Instance Size 24 XL 16 XL 12 XL 8 XL 4 XL 2 XL XL
Total size of the cluster (1 Leader + 5 core nodes) 6 6 6 6 6 6 6
Total query runtime on R5A (seconds) 6934.22936 5530.74672 5834.32344 5718.72582 7615.58392 11431.37368 20688.58642
Total query runtime on R6A (seconds) 2897.44817 2906.49952 3017.85315 3488.83875 4661.32856 7717.33575 17378.49043
Total query runtime improvement with R6A 58.22% 47.45% 48.27% 38.99% 38.79% 32.49% 16.00%
Geometric mean query runtime R5A (sec) 53.27574 41.76973 42.50324 37.62155 44.58173 58.88182 91.72095
Geometric mean query runtime R6A (sec) 21.52803 21.36831 19.94607 21.59493 26.90097 36.57557 73.3405
Geometric mean query runtime improvement with R6A 59.59% 48.84% 53.07% 42.60% 39.66% 37.88% 20.04%
EC2 R5A instance price ($ per hour) $5.42400 $3.61600 $2.71200 $1.80800 $0.90400 $0.45200 $0.22600
EMR R5A instance price ($ per hour) $0.27000 $0.27000 $0.27000 $0.27000 $0.22600 $0.11300 $0.05700
(EC2 + EMR) R5A instance price ($ per hour) $5.69400 $3.88600 $2.98200 $2.07800 $1.13000 $0.56500 $0.28300
Cost of running on R5A ($ per instance) $10.96764 $5.97013 $4.83276 $3.30098 $2.39045 $1.79409 $1.62635
EC2 R6A instance price ($ per hour) $5.44320 $3.62880 $2.72160 $1.81440 $0.90720 $0.45360 $0.22680
EMR R6A price ($ per hour per instance) $1.36080 $0.90720 $0.68040 $0.45360 $0.22680 $0.11340 $0.05670
(EC2 + EMR) R6A instance price ($ per hour) $6.80400 $4.53600 $3.40200 $2.26800 $1.13400 $0.56700 $0.28350
Cost of running on R6A ($ per instance) $5.47618 $3.66219 $2.85187 $2.19797 $1.46832 $1.21548 $1.36856
Total cost reduction with R6A including performance improvement -50.07% -38.66% -40.99% -33.41% -38.58% -32.25% -15.85%

基准测试方法

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

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

结论

在这篇文章中,我们描述了如何估算将 Amazon EMR 与 M6A 和 R6A 实例相比使用同等的上一代实例所带来的性价比优势。将这些新实例与 Amazon EMR 配合使用可将性价比提高 15-50%。


作者简介

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

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


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。