使用 Amazon EMR 的优势 - Amazon EMR

使用 Amazon EMR 的优势

使用 Amazon EMR 有诸多优势。本节概览这些优势并提供指向其它信息的链接以帮助您加深了解。

节省成本

Amazon EMR 的定价取决于您部署的 Amazon EC2 实例的实例类型和数量及您启动集群的区域。按需定价提供很低的费率,但您可以通过购买预留实例或竞价型实例来进一步降低成本。Spot 实例可以显著节省成本,在某些情况下,低至按需定价的十分之一。

注意

如果您为 EMR 集群使用 Amazon S3、Amazon Kinesis 或 DynamoDB,这些服务会产生额外费用 - 与您的 Amazon EMR 使用费分开计费。

注意

当您在私有子网中设置 Amazon EMR 集群时,我们建议您也为 Amazon S3 设置 VPC 端点。如果您的 EMR集群处于没有适用于 Amazon S3 的 VPC 端点的私有子网中,则您需要为与 S3 流量关联的其他 NAT 网关付费,因为您的 EMR 集群与 S3 之间的流量不是位于您的 VPC 内。

有关定价选项和定价详情的更多信息,请参阅 Amazon EMR 定价

AWS集成

Amazon EMR 可与其它AWS服务集成,为您的集群提供联网、存储、安全等功能。下面的列表提供了几个这种集成的示例:

  • Amazon EC2 适用于包含集群中的节点的实例

  • Amazon Virtual Private Cloud(Amazon VPC)用于配置在其中启动实例的虚拟网络

  • Amazon S3 可存储输入和输出数据

  • Amazon CloudWatch 可监控集群性能和配置警报

  • AWS Identity and Access Management(IAM)可配置权限

  • AWS CloudTrail 可审计服务请求

  • AWS Data Pipeline 可调度和启动您的集群

  • AWS Lake Formation 可在 Amazon S3 数据湖中发现、编目和保护数据

部署

您的 EMR 集群由 EC2 实例组成,这些实例执行您提交给集群的工作。当您启动集群时,Amazon EMR 使用您选择的应用程序(如 Apache Hadoop 或 Spark)配置实例。为集群选择最适合处理需求的实例大小和类型:批处理、低延迟查询、流数据或大数据存储。有关 Amazon EMR 实例类型的更多信息,请参阅配置集群硬件和联网

Amazon EMR 提供了多种在集群上配置软件的方式。例如,您可以安装包含选定应用程序集(可以包含 Hadoop 等通用框架及 Hive、Pig、Spark 等应用程序)的 Amazon EMR 版本。您也可以安装多个 MapR 分发版之一。Amazon EMR 使用 Amazon Linux,因此,您还可以在集群上借助 yum 包管理器或从源代码手动安装软件。有关更多信息,请参阅配置集群软件

可扩展性和灵活度

Amazon EMR 可根据您的计算需求变化灵活扩缩集群。您可以调整集群,在工作负载高峰时增加实例,在工作负载高峰过后移除实例,从而控制成本。有关更多信息,请参阅手动调整正在运行的集群的大小

Amazon EMR 还提供了运行多个实例组的选项,因此,您可以在一个组中使用按需实例来保障处理能力,同时在另一个组中使用竞价型实例来加快任务完成速度并降低成本。您还可以混合多种实例类型以充分利用某种竞价型实例类型的定价优势。有关更多信息,请参阅什么时候应该使用竞价型实例?

此外,Amazon EMR 还可以为您的输入、输出和中间数据灵活使用多种文件系统。例如,对于不需要在集群生命周期之外存储的处理数据,您可以选择在集群的主节点和核心节点上运行的 Hadoop Distributed File System(HDFS)。您可以选择 EMR 文件系统(EMRFS),将 Amazon S3 用作在集群上运行的应用程序的数据层,以便分离计算和存储,并在集群生命周期之外保留数据。EMRFS 具备更多优势,可供您独立扩展或收缩计算和存储需求。您可以通过调整集群来扩展计算需求,也可以通过使用 Amazon S3 来扩展存储需求。有关更多信息,请参阅使用存储和文件系统

可靠性

Amazon EMR 能够监控集群中的节点并自动终止和替换出现故障的实例。

Amazon EMR 提供了控制集群终止方式(自动或手动)的配置选项。如果您将集群配置为自动终止,则集群会在所有步骤完成后终止。这称作暂时性集群。不过,您可以将集群配置为在处理完成后继续运行,这样,当您不再需要它时,可以选择手动终止集群。或者,您可以创建一个集群,与所安装的应用程序直接交互,然后在不再需要时手动将其终止。这些示例中的集群称作长时间运行的集群

此外,您还可以配置终止保护,以防止集群中的实例由于处理期间出现的错误或问题而终止。如果启用终止保护,您可以在终止前从实例恢复数据。这些选项的默认设置根据您启动集群时是采用控制台、CLI 还是 API 方式而有所不同。有关更多信息,请参阅使用终止保护

安全性

Amazon EMR 利用其它AWS服务(如 IAM 和 Amazon VPC)和功能(如 Amazon EC2 密钥对)来帮助您保护集群和数据。

IAM

Amazon EMR 与 IAM 集成以管理权限。您可以使用 IAM policy 定义权限,并将其附加到 IAM 用户或 IAM 组。您在策略中定义的权限确定了这些用户或组成员能够执行的操作及其能够访问的资源。有关更多信息,请参阅Amazon EMR 如何与 IAM 配合使用

此外,Amazon EMR 为 Amazon EMR 服务本身使用 IAM 角色,为实例使用 EC2 实例配置文件。这些角色授予服务和实例代表您访问其它AWS服务的权限。Amazon EMR 服务及 EC2 实例配置文件都有默认角色。默认角色使用AWS托管式策略,它在您首次从控制台启动 EMR 集群并选择默认权限时自动创建。您还可以从 AWS CLI 创建默认的 IAM 角色。如果您想要代替AWS管理权限,则可以为此服务及实例配置文件选择自定义角色。有关更多信息,请参阅为 Amazon EMR 配置 IAM 服务角色对AWS服务和资源的权限

安全组

Amazon EMR 使用安全组控制 EC2 实例的入站和出站流量。当您启动集群时,Amazon EMR 为您的主实例使用一个安全组,为核心/任务实例使用一个共享安全组。Amazon EMR 配置安全组规则以确保集群中实例间通信的安全。对于更高级的规则,您可以选择配置额外的安全组并将它们分配给主实例及核心/任务实例。有关更多信息,请参阅使用安全组控制网络流量

加密

Amazon EMR 通过 EMRFS 支持可选的 Amazon S3 服务器端和客户端加密,以帮助保护您在 Amazon S3 中存储的数据的安全。采用服务器端加密时,Amazon S3 会在您上载数据后对数据进行加密。

对于客户端加密,加密和解密过程在您的 EMR 集群上的 EMRFS 客户端中进行。您使用 AWS Key Management Service(AWS KMS)或您自己的密钥管理系统来管理用于客户端加密的根密钥。

有关更多信息,请参阅使用 EMRFS 属性指定 Amazon S3 加密

Amazon VPC

Amazon EMR 支持在 Amazon VPC 中的 Virtual Private Cloud(VPC)中启动集群。VPC 是AWS中一种隔离的虚拟网络,可提供控制高级网络配置和访问方面的功能。有关更多信息,请参阅配置联网

AWS CloudTrail

Amazon EMR 与 CloudTrail 集成可记录有关您的AWS账户或代表您的账户发起的请求的信息。借助这些信息,您可以跟踪谁在何时访问了您的集群,以及他们发起请求的 IP 地址。有关更多信息,请参阅在 AWS CloudTrail 中记录 Amazon EMR API 调用

Amazon EC2 密钥对

您可以通过在远程电脑与主节点之间构建安全连接来监控集群并与之交互。您可以使用 Secure Shell(SSH)网络协议进行此连接或使用 Kerberos 进行身份验证。如果您使用 SSH,则 Amazon EC2 密钥对是必需的。有关更多信息,请参阅对 SSH 凭证使用 EC2 密钥对

监控

您可以使用 Amazon EMR 管理界面和日志文件来对集群问题进行故障排查,如故障或错误。Amazon EMR 可以在 Amazon S3 中归档日志文件,因此,您可以存储日志并对问题进行问题排查(甚至在集群终止后)。Amazon EMR 还在 Amazon EMR 控制台中提供了可选的调试工具,让您能够基于步骤、任务和任务浏览日志文件。有关更多信息,请参阅配置集群日志记录和调试

Amazon EMR 与 CloudWatch 集成以跟踪集群及集群中任务的性能指标。您可以基于多种指标(如集群是否处于空闲状态、已使用的存储的百分比)配置警报。有关更多信息,请参阅使用 CloudWatch 指标监控 Amazon EMR 指标

管理界面

有多种可以和 Amazon EMR 交互的方式:

  • 控制台 – 图形用户界面,可用于启动和管理集群。借助这个界面,您可以填写各种 Web 窗体,指定待启动集群的详细信息、查看现有集群的详细信息、调试和终止集群。使用控制台是开始使用 Amazon EMR 的最简单的方式,您无需具备编程知识。您可以在线使用该控制台,网址为 https://console.aws.amazon.com/elasticmapreduce/home

  • AWS Command Line Interface(AWS CLI)– 可在本地计算机上运行的客户端应用程序,用于连接 Amazon EMR 以及创建和管理集群。AWS CLI 包含特定于 Amazon EMR 的功能丰富的命令集。您可以使用它来编写脚本,以实现启动和管理集群的自动化。如果您更喜欢在命令行中工作,则最好的选择是使用 AWS CLI。有关更多信息,请参阅 AWS CLI 命令参考中的 Amazon EMR

  • 软件开发工具包 (SDK) – SDK 提供了调用 Amazon EMR 以创建和管理集群的函数。借助它们,您可以编写应用程序,用于自动处理集群的创建和管理流程。使用 SDK 是扩展或者自定义 Amazon EMR 的功能的理想选择。Amazon EMR 目前在可用于以下 SDK:Go、Java、.NET(C# 和 VB.NET)、Node.js、PHP、Python 和 Ruby。有关这些 SDK 的更多信息,请参阅适用于AWS的工具Amazon EMR 示例代码和库

  • Web 服务 API – 一种低层接口,可以用来直接使用 JSON 调用 Web 服务。使用 API 是创建调用 Amazon EMR 的自定义 SDK 的最佳选择。有关更多信息,请参阅 Amazon EMR API 参考