为什么选择 EMR?
Amazon EMR 是行业领先的云大数据平台,适用于使用多种开源框架进行数据处理、交互分析和机器学习 (ML),例如 Apache Spark、Apache Hive、Presto。Amazon EMR 定价既简单又可预测:您按每秒费率根据使用时间付费,同时设有一分钟最低费用。一个 10 节点集群运行 10 小时的费用与一个 100 节点集群运行 1 小时的费用相同。Amazon EMR 的定价取决于您如何部署 EMR 应用程序。您可以在具有 Amazon Elastic Cloud Compute(Amazon EC2)实例的 EMR 集群、AWS Outposts、Amazon Elastic Kubernetes Service(Amazon EKS)或 EMR Serverless 的 EMR 集群上运行它们。您可以使用 EC2 或 AWS Fargate 在 AWS 上运行 Amazon EKS。
对于 Amazon EMR on EC2 集群、Amazon EMR on EKS 集群和 Amazon EMR Serverless 应用程序使用的 IPv4 地址,您将产生标准的公有 IPv4 地址费用。有关更多详细信息,请访问 VPC 定价页面的公有 IPv4 地址部分。
AWS 定价计算器
在单次估计中计算您的 Amazon EMR 和架构成本。
Amazon EC2 上的 Amazon EMR
此定价适用于在具有 Amazon EC2 实例的 Amazon EMR 集群上运行的 Amazon EMR 应用程序。
此 Amazon EMR 价格不包含 Amazon EC2 价格 (基础服务器的价格) 和 Amazon Elastic Block Store (Amazon EBS) 价格 (挂载 Amazon EBS 卷时)。这些费用也是按秒计算的,并且设有一分钟最低费用。EC2 提供多种定价选项供您选择,包括按需型(如下所示)、一年和三年预留实例、容量 Savings Plans 和 Spot 实例。Spot 实例是备用 EC2 容量,与按需实例的价格相比,使用 Spot 实例最高可以享受 90% 的折扣。请在竞价型实例顾问页面使用“EMR 支持的实例类型”筛选条件,了解与按需型实例相比,竞价型实例可以节省多少费用。
Amazon EKS 上的 Amazon EMR
此定价适用于 Amazon EKS 集群上的 Amazon EMR。
此 Amazon EMR 价格不包含 Amazon EKS 定价或与 Amazon EKS 一起使用的任何其他服务的定价。您可以使用 EC2 或 AWS Fargate 在 AWS 上运行 EKS。如果您使用的是 EC2(包括 EKS 托管节点组),您只需为您创建的用于运行 Kubernetes 工作线程节点的 AWS 资源(例如 EC2 实例或 EBS 卷)付费。请参阅 EC2 定价页面中的详细定价信息。如果您使用的是 AWS Fargate,定价的计算依据是从开始下载容器映像到 EKS Pod 终止使用的 vCPU 和内存资源进行计算,四舍五入到最近的秒数。最低收费标准为 1 分钟。请参阅 AWS Fargate 定价页面中的详细定价信息。
Amazon EKS 上的 Amazon EMR 定价根据从开始下载 EMR 应用程序映像到 EKS Pod 终止所使用的 vCPU 和内存资源进行计算,四舍五入到最近的秒数。定价基于任务或 Pod 所请求的 vCPU 和内存资源。
AWS Outposts 上的 Amazon EMR
AWS Outposts 上的 Amazon EMR 定价与基于云的 EMR 实例定价相同。有关 AWS Outposts 定价的详细信息,请参阅 AWS Outposts 定价页面。
Amazon EMR Serverless
使用 EMR Serverless,没有预付费用,并且您仅需为使用的资源付费。您需要为您的应用程序所消耗的 vCPU、内存和存储资源量付费。
利用 EMR Serverless,您可以通过开源框架版本创建应用程序,然后将任务提交到应用程序。作为任务规范的一部分,您可以提供同时工件的最小和最大数量,以及每个工件的 vCPU、内存和存储。EMR 在您指定的限制内,根据任务要求自动增减工件。可以独立配置工件的计算、内存和存储三维。 您可以选择每个工作线程的 vCPU 数量从 1 个、2 个、4 个、8 个到 16 个,每个工作线程的内存从 2GB 到 120GB(增量为 1GB 到 8GB)。对于存储选项,您可以选择每个工作线程 20GB 到 200GB 的标准存储,也可以选择每个工作线程 20GB 到 2TB 的随机优化存储。
您需要为工作线程准备好开始运行工作负载到停止期间所使用的汇总 vCPU、内存和存储资源付费,该时间四舍五入至最近的秒数,最小值为 1 分钟。如果设置应用程序在应用程序启动时启动工件,请求的工件将在启动应用程序时启动,停止应用程序或者应用程序保持待机时结束。
注意:使用自定义映像时,您需要为从 EMR Serverless 开始下载映像到工作程序停止期间使用的聚合 vCPU、内存和存储资源付费,时间四舍五入到最接近的秒数,最短为 1 分钟。
定价详情(计算和内存)
定价基于所有工件使用的 vCPU、内存和存储资源汇总。
-
Linux/x86
-
Linux/ARM
-
Linux/x86
-
-
Linux/ARM
-
定价详细信息(短暂存储)
标准存储:默认情况下,为所有的工作线程提供 20GB 的临时存储,您只需为您为每个工作线程配置的任何额外存储付费。
随机优化存储:您需要为每个工作线程配置的全部存储(包括前 20GB)付费。
支持的工件配置
CPU | 内存值 | 短暂存储 |
1 个 vCPU | 最低为2GB,最高为8GB,以 1GB 为增量 | 20GB - 200GB |
2 个 vCPU | 最低为4GB,最高为16 GB,以 1GB 为增量 | 20GB - 200GB |
4 个 vCPU | 最低为8GB,最高为30GB,以 1GB 为增量 | 20GB - 200GB |
8 个 vCPU | 最低为16GB,最高为60GB,以 4GB 为增量 | 20GB - 200GB |
16 个 vCPU | 最低为32GB,最高为120GB,以 8GB 为增量 | 20GB - 200GB |
持续时间
持续时间计算为从工件准备好运行工作负载到工件停止时间,四舍五入至最近的秒数,最少 1 分钟。
额外费用
如果您的应用程序使用其他 AWS 服务,可能会产生额外的费用。例如,如果您的应用程序使用 Amazon Simple Storage Service(S3)存储和处理数据,您将按标准 Amazon S3 费率付费。如果您从 Amazon S3、Amazon Relational Database Service(RDS)或 Amazon Redshift 等来源迁移数据,则您需要按标准的请求和数据传输费率付费。如果您使用 Amazon CloudWatch,则需要按照 CloudWatch 日志和 CloudWatch 事件的标准费率付费。
Amazon EMR WAL
此定价适用于带有使用 Amazon EMR WAL 的 Apache HBase 应用程序的 EC2 上的 Amazon EMR 集群。Apache HBase 预写日志允许将对数据的所有更改记录到基于文件的存储中。借助 EC2 上的 Amazon EMR,您可以将 Apache HBase 预写日志写入 Amazon EMR WAL,这是一个持久性托管存储层,其使用寿命比您的集群要长。在极少数情况下,如果您的集群或可用区运行状况不佳或不可用,您可以创建一个新集群,将其指向相同的 Amazon S3 根目录和 Amazon EMR WAL 工作区,并在几分钟内自动恢复 WAL 中的数据。有关更多信息,请参阅 Amazon EMR WAL 文档。
您将按 EMR WAL 的使用量付费。如果您有配置为使用 WAL 的活动集群,则将根据使用量按 EMR-WAL-WALHours 向您收取 EMR WAL 存储费用,按 WriteRequestGiB 收取写入费用并按 ReadRequestGiB 收取读取费用。
EMR-WAL-WALHours:EMR WAL 将为每个 Apache HBase 区域创建一个 WAL。集群终止后,如果 EMR WAL 中仍有数据未刷新到 Amazon S3,您可以通过启动恢复集群来恢复数据,或者选择通过创建临时集群来清理 WAL 并使用 EMR WAL CLI 来删除 EMR WAL 资源。如果您没有明确删除 EMR WAL 数据,EMR WAL 将保留这些数据,并向您收取 30 天未刷新数据的费用。您可以在下面看到一个示例。
ReadRequestGiB 和 WriteRequestGiB:这两个维度用于读取和写入请求。使用 EMR WAL 将数据写入集群上的表的 Apache HBase API 调用按 WriteRequestGiB 计费。所有 Apache HBase 写入(例如“Put”操作)都将进行 EMR WAL 写入。在 Apache HBase 恢复操作期间从 EMR WAL 读取数据的 Apache HBase API 调用按 ReadRequestGiB 计费。读取和写入根据项目大小和 EMR 账单收费,至少 1 字节。
定价示例
示例 1:EC2 上的 EMR
定价基于 US-East-1 定价。
假设您运行部署在 Amazon EC2 上的 Amazon EMR 应用程序,并且使用一个 c4.2xlarge EC2 实例作为主节点,两个 c4.2xlarge EC2 实例作为核心节点。您需要为 EMR 和 EC2 节点付费。如果您运行一个月,该月的利用率为 100%,并使用 EC2 的按需定价,您的费用将为:
主节点:
EMR 费用 = 1 个实例 x 每小时 0.105 USD x(使用 100/100/月)x 每月 730 小时 = 76.65 USD(EMR 主节点成本)EC2 费用 = 1 个实例 x 每小时 0.398 USD x 每月 730 小时 = 290.54 USD(EC2 主节点成本)
核心节点:
EMR 费用 = 2 个实例 x 每小时 0.105 USD x(使用 100/100/月)x 每月 730 小时 = 153.30 USD(EMR 核心节点成本)
EC2 费用 = 2 个实例 x 每小时 0.398 USD x 每月 730 小时 = 581.08 USD(EC2 核心节点成本)
总费用 = 76.65 USD + 290.54 USD + 153.30 USD + 581.08 USD = 1101.57 USD
示例 2:EKS 上的 EMR
定价基于 US-East-1 定价。
假设您正在运行部署在 Amazon EKS 上的 Amazon EMR-Spark 应用程序。在这种情况下,EKS 使用 r5.2xlarge EC2 实例(8 个 vCPU,64 GB RAM)获得其计算能力。假设该 EKS 集群有 100 个节点,总计 800 个 vCPU,总内存为 6400 GB。假设该应用程序在 30 分钟内使用了 100 个 VCPU 和 300GB 内存。
该工作的 Amazon EMR 提升费用总额:
vCPU 的提升费用总额 =(100 * 0.01012 USD * 0.5)=(vCPU 数量 * 每 vCPU 小时费率 * 作业运行小时数)= 0.506 USD
内存提升费用总额 =(300 * 0.00111125 USD * 0.5)=(已使用的内存数量 * 每 GB 小时费率*作业运行小时数)= 0.1667 USD
EMR 作业的 EMR 提升费用总额 = 0.6727 USD
额外费用
您需要为创建的每一个 Amazon EKS 集群支付每小时 0.10 USD 的费用。您可以使用单个 Amazon EKS 群集通过利用 Kubernetes 命名空间和 IAM 安全策略来运行多个应用程序。您可以使用 Amazon EC2 或 AWS Fargate 在 AWS 上运行 EKS。
如果您使用的是 Amazon EC2(包括 Amazon EKS 托管节点组),您只需为您创建的用于运行 Kubernetes 工作线程节点的 AWS 资源(例如 EC2 实例或 Amazon EBS 卷)付费。您只需为您的实际用量支付费用。既没有最低费用,也无需预先承诺。请参阅 EC2 定价页面中的详细定价信息。
如果您使用的是 AWS Fargate,定价的计算依据是从开始下载容器映像到 Amazon EKS Pod 终止使用的 vCPU 和内存资源进行计算,四舍五入到最近的秒数。最低收费标准为 1 分钟。请参阅 AWS Fargate 定价页面中的详细定价信息。
示例 3:EMR Serverless
假设您将一个 Spark 任务提交到 EMR Serverless。假定任务配置为使用至少 25 个工件,最多 75 个工件,每个配置 4VCPU 和 30GB 内存。考虑没有配置额外短暂存储。如果任务使用 25 个工件(或 100 个 vCPU)运行 30 分钟,并自动缩放,添加 50 个工件(200 个 vCPU)15 分钟:
总 vCPU 小时费用 = (100 * 0.052624 USD* 0.5) + (200 * 0.052624 USD* 0.25) = (vCPU 数量 * 每个 vCPU 小时费率 * 任务运行小时数) = 5.2624 USD
总 GB 小时 = (750 * 0.0057785 USD* 0.5) + (1500 * 0.0057785 USD* 0.25) = (配置的内存总 GB * 每 GB 小时费率 * 任务运行小时数) = 4.333875 USD
总 EMR Serverless 费用 = 9.596275 USD
其他费用:如果应用程序使用其他 AWS 服务,如 Amazon S3,将按标准 S3 费率付费。
示例 4:EMR WAL
假设您使用 Apache HBase 创建一个新的 Amazon EMR 集群,并选择完全备份美国东部(弗吉尼亚州北部)区域的集群。因为这适用于新应用程序,因此您不知道您的流量模式是什么。为简单起见,假设您的用户创建了 10 个 HBase 表(包括系统表)、每个表 2 个 HBase 区域,并且用户每次与您的应用程序交互时,都会写入 1 KiB 数据。
在 10 天的时间内,您的应用程序几乎没有产生流量,这将导致每天发生 10000 次写入。然而,在第 11 天,您的应用程序流量激增至 250 万次写入。您还决定同时更新集群上的自定义代码,并在第 11 天为最终用户实施计划的夜间停机时间。我们假设这会导致 HBase 恢复操作从 EMR WAL 读取 100 万次。您的应用程序可以扩展,从而为用户提供无缝体验。然后,您的应用程序将进入更常规的流量模式,即到月底为止每天 5 万次写入。
下表总结了您当月的总体使用情况。
时间范围 —(月中几号) | 总写入数 | 总读取数 | EMR WAL 使用情况 |
1 - 10 | 100000 次写入(10000 次写入 x 10 天) | ||
11 | 2500000 次写入 | 100 万次读取 | |
12 - 30 | 950000 次写入(50000 次写入 x 19 天) | ||
月度费用总额 | 3550000 次写入 | 100 万次读取 | |
月费总计 | 0.30 USD(每 GiB 的 EMR WAL 写入请求 0.0883 USD x 355 万 KiB 写入/1048576 KiB/GiB) | 0.08 USD(每 GiB 的 EMR WAL 读取请求 0.0883 USD x 100 万 KiB 读取/1048576 KiB/GiB) | 25.92 USD(每 WAL 每小时 EMR WAL 使用量 0.0018 USD x 10 个 HBase 表的使用量 x 每个 HBase 表 2 个 HBase 区域 x 每个 HBase 区域 x 每个 HBase 区域 1 个 WAL x 30 天 x 24 小时或 14400 EMR-WAL-WALHours 的使用量) |
本月的账单为 26.52 USD,总额包括 ReadRequestGiB 和 WriteRequestGiB 的 0.38 USD,以及 EMR-WAL-WALHours 的 25.92 USD。