Amazon EMR 无服务器成本估算器

Amazon EMR 无服务器成本估算器

源节点: 1776349

Amazon EMR 无服务器 是一个无服务器选项 亚马逊电子病历 这使得数据分析师和工程师可以轻松地使用 Apache Spark 和 Hive 等开源大数据分析框架运行应用程序,而无需配置、管理和扩展集群或服务器。 您可以通过 Amazon EMR 的性能优化运行时获得最新开源框架的所有功能,而无需规划和操作实例和集群。

借助 Amazon EMR,您可以在专用的 EMR 集群、现有的 Amazon Elastic Kubernetes服务 (Amazon EKS) 集群,或使用无需管理集群或实例的新 EMR 无服务器部署选项。 当您使用 Amazon EMR 版本(例如 Amazon EMR 6.8)构建 Spark 或 Hive 应用程序时,您可以在 EMR 集群上运行该应用程序,在 EKS 集群上使用 EKS 上的 Amazon EMR,或使用 EMR Serverless 而无需更改应用程序。

要了解每个部署选项的好处 EMR 无服务器,EMR Serverless 和 EC2 上的 Amazon EMR 之间有哪些功能差异? 在 Amazon EMR 常见问题解答中。 您还可以从以下位置了解这些选项的定价 Amazon EMR 定价页面. 许多客户已经在 EMR 集群上运行数据分析应用程序,并发现新的无服务器选项更简单且成本更低。

在这篇文章中,我们将讨论如何使用新的无服务器选项估算运行当前在 EMR 集群上运行的应用程序的成本,并仅通过使用当前的应用程序指标来执行此分析。 此方法可帮助您评估和采用对应用程序最具成本效益的部署选项。 但是,Amazon EMR 定价页面并未告诉您如何轻松估算在 EMR Serverless 上运行现有 EMR 集群应用程序的成本。 在以下部分中,我们描述了一种使您能够做到这一点的方法。

尽管本文中的示例讨论了如何估算在 EMR 集群上运行的应用程序的成本,但如果您在其他地方运行 Spark 或 Hive 应用程序,并且想要估算在 EMR 上运行它的成本,您也可以使用该方法无服务器。 例如,如果您在上运行自我管理的 Spark 或 Hive 应用程序 亚马逊弹性计算云 (Amazon EC2) 集群,或者如果您在 AWS胶水,我们向您展示了如何使用这种方法来估算在 EMR Serverless 上运行应用程序的成本。

估算在 EMR 集群上运行应用程序的成本

当您在 Amazon EMR 集群上运行应用程序时,您需要为以下各项单独付费:

  1. 运行集群实例的Amazon EC2价格(底层服务器的价格)
  2. 该价格 Amazon Elastic Block商店 (Amazon EBS) 卷,如果您选择附加 EBS 卷
  3. 集群实例的 Amazon EMR 价格

运行集群的总成本包括这三者。 您可以选择多种 Amazon EC2 定价选项,包括按需、1 年和 3 年预留实例、Capacity Savings Plans 和 Spot 实例。 您选择的 Amazon EC2 定价选项决定 (a) Amazon EC2 价格。 在 EMR 集群上运行应用程序的成本是 (a)、(b) 和 (c) 的总和。 您可以在集群运行的生命周期(从集群启动到集群终止)或集群运行的特定时间段内计算此成本。 我们建议运行前者,即从集群启动到集群终止计算(a)、(b)和(c)。 如果您已经为您的 Amazon EMR 集群设置标签,您可以轻松获得 使用 AWS Cost Explorer 为您的 EMR 集群生成详细的成本报告.

估算使用 EMR Serverless 运行相同应用程序的成本

当您使用 EMR Serverless 运行相同的应用程序时,您需要为应用程序消耗的 vCPU、内存和存储资源量付费。 EC2 实例或 EBS 卷不单独收费。 而且,您只需为应用程序实际使用的资源付费,而不是为配置的 EC2 实例付费。 例如,当在 EMR 集群上运行应用程序时,当集群中的一个 EC2 实例被部分利用时(例如,实例上可用的 16 GB 内存中使用了 64 GB 内存,或者实例上可用的 4 个 VCPU 中有 16 个 VCPU 被使用),或者当 EC2 实例空闲时(例如,当实例正在初始化或等待应用程序启动时),您仍然需要为整个 EC2 实例和持续时间支付 Amazon EC2、Amazon EMR 和 Amazon EBS 费用该实例在 EMR 集群中处于活动状态。 使用 EMR Serverless,您只需为从工作人员开始运行您的 Spark 或 Hive 作业到停止运行期间使用的 vCPU、内存和存储资源付费。

要估算在 EMR Serverless 上运行 EMR Spark 或 Hive 应用程序的成本,您需要首先汇总在 EMR 集群上运行的每个 YARN 应用程序消耗的总计算 vCore 秒、内存 MB 秒和存储 GB 秒,从 YARN 容器启动到 YARN 容器终止。 您可以从 YARN 时间线服务器或 YARN CLI 工具访问的 YARN 资源管理器日志中获取这些指标。 您可以检索每个 YARN 应用程序使用的运行时间、vCore 秒数和内存 MB 秒数。

如果您的集群只运行 Spark 应用程序,则有一种更简单的方法来估算。 您可以从 Spark 事件日志中获取这些指标,而不是从 YARN 资源管理器日志中获取 vCore 秒、内存 MB 秒和存储 GB 秒。 我们提供了工具 EMR 无服务估算器,它可以为您的应用程序解析 Spark 事件日志,并为您的成本估算提供聚合指标。

获得应用程序的使用指标后,您可以使用以下方法计算估计的 EMR 无服务器成本 EMR 无服务器定价. 只需将聚合 vCore 秒乘以 EMR Serverless vCPU 每秒定价,将聚合内存 MB 秒乘以 EMR Serverless 内存每秒定价,将存储 GB 秒乘以 EMR Serverless 存储每秒定价(仅当存储要求每个工人超过 20 GB)。 通过将 vCPU、内存和存储的这些成本相加,您可以比较在 EMR Serverless 上运行相同应用程序的成本。

在这种方法中,我们假设应用程序的性能是等效的。 换句话说,EMR 集群上每个 YARN 容器的大小(vCPU、内存)和运行时持续时间与在 EMR Serverless 上运行应用程序所需的工作线程的数量、大小和运行时持续时间相同。 我们做出此假设是因为无论应用程序是在 EMR 集群上还是在 EMR Serverless 上运行,EMR 版本的 EMR 运行时都是相同的。

例如:

让我们使用单个集群对 EC2 上的 Amazon EMR 和 EMR Serverless 进行示例成本比较。

我们在具有五个节点(一个主要节点、两个核心节点和两个任务节点)的 EMR 集群上运行了一个 Spark 应用程序,并使用 YARN CLI 收集了 YARN 指标。以下代码显示了我们的聚合资源分配。

聚合资源配置

我们计算了 EC2 上的 Amazon EMR 成本,如下所示:

  • 集群实例
    • 初级:m5.2xlarge:1
    • 核心:r5.2xlarge:2
    • 任务:r5.2xlarge:2
  • 集群运行时间 = 18 分钟
  • 实例按需成本
    • m5.2xlarge(8 个 vCPU,32 GiB 内存)
      • 亚马逊 EC2:0.384 美元/小时
      • Amazon EMR 增量:0.096 美元/小时
    • r5.2xlarge(8 个 vCPU,64 GiB 内存)
      • 亚马逊 EC2:0.504 美元/小时
      • Amazon EMR 增量:0.126 美元/小时

以下是 EMR on EC2 的成本计算:

  • Amazon EMR 成本 = ((1 个主节点 x 0.096 美元/小时) + (2 个核心节点 x 0.126 美元/小时) + (2 个任务节点 x 0.126 美元/小时)) = 0.60 美元
  • Amazon EC2 成本 = ((1 个主节点 x 0.384 美元/小时) + (2 个核心节点 x 0.504 美元/小时) + (2 个任务节点 x 0.504 美元/小时)) = 2.40 美元
  • EC2 集群上的 Amazon EMR 成本/小时 = 0.6 美元 + 2.40 美元 = 3 美元/小时 * 8/60 小时(以小时为单位的运行时间)

Amazon EC2 上的 Amazon EMR 总成本为 0.40 USD/小时。

要计算 EMR 无服务器成本,请汇总您之前在 EMR 集群上运行的同一应用程序的 vCore 秒数和内存 MB 秒数。 然后将这些数字乘以 EMR 无服务器 vCPU 和内存价格。 我们的计算结果如下:

  • 总 vcore_秒 = 5737
  • 总内存mb_秒 = 120156631
  • 转换为 vCPU/hr 和 memory-GB/hr:
    • 聚合 vCPU/小时:5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • 总 vCPU 小时成本 = 33 vCPU * 0.052624 VCPU/hr * 8/60 = 0.23 USD
  • 总内存 GB 成本 = 1.59 MB * 0.0057785 内存/小时 * 8/60 = 0.00122 美元

在此示例中,EMR 无服务器的总成本为 0.231 美元,减少了 42%。

结论

Amazon EMR Serverless 是 Amazon EMR 中最近推出的无服务器选项,无需配置、管理和扩展集群即可轻松运行 Spark 和 Hive 等开源框架。 已经使用 EMR 集群的客户希望了解他们如何估算使用 EMR Serverless 运行 EMR 应用程序的成本。 我们提供了一种方法,您可以使用该方法根据分析 EMR 集群的应用程序指标来执行成本分析。

我们希望您尝试一下,并与我们分享您的反馈!


关于作者

拉迪卡拉维拉拉 是 AWS 的首席产品经理。

马修连姆 是 AWS 的高级解决方案架构经理。

时间戳记:

更多来自 AWS 大数据