

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon EMR 的优势
<a name="emr-overview-benefits"></a>

使用 Amazon EMR 有诸多优势。这包括通过提供的灵活性 Amazon 以及与构建自己的本地资源相比可以节省的成本。本节概览这些优势并提供指向其它信息的链接以帮助您加深了解。

**Topics**
+ [节省成本](#emr-benefits-cost)
+ [Amazon 整合](#emr-benefits-integration)
+ [部署](#emr-benefits-deployment)
+ [可扩展性和灵活度](#emr-benefits-scalability)
+ [可靠性](#emr-benefits-reliability)
+ [安全性](#emr-benefits-security)
+ [监控](#emr-benefits-monitoring)
+ [管理界面](#emr-what-tools)

## 节省成本
<a name="emr-benefits-cost"></a>

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

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

**注意**  
当您在私有子网中设置 Amazon EMR 集群时，我们建议您也[为 Amazon S3 设置 VPC 端点](https://docs.amazonaws.cn/vpc/latest/privatelink/vpc-endpoints-s3.html)。如果您的 EMR集群处于没有适用于 Amazon S3 的 VPC 端点的私有子网中，则您需要为与 S3 流量关联的其他 NAT 网关付费，因为您的 EMR 集群与 S3 之间的流量不是位于您的 VPC 内。

有关定价选项和定价详情的更多信息，请参阅 [Amazon EMR 定价](https://www.amazonaws.cn/elasticmapreduce/pricing/)。

## Amazon 整合
<a name="emr-benefits-integration"></a>

Amazon EMR 与其他 Amazon 服务集成，为您的集群提供与联网、存储、安全等相关的功能和功能。下面的列表提供了几个这种集成的示例：
+ Amazon EC2 适用于包含集群中的节点的实例
+ Amazon Virtual Private Cloud（Amazon VPC）用于配置在其中启动实例的虚拟网络
+ Amazon S3 可存储输入和输出数据
+ Amazon CloudWatch 将监控集群性能并配置警报
+ Amazon Identity and Access Management (IAM) 用于配置权限
+ Amazon CloudTrail 审计向该服务提出的请求
+ Amazon Data Pipeline 安排和启动您的集群
+ Amazon Lake Formation 在 Amazon S3 数据湖中发现、编目和保护数据

## 部署
<a name="emr-benefits-deployment"></a>

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

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

## 可扩展性和灵活度
<a name="emr-benefits-scalability"></a>

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

 Amazon EMR 还提供了运行多个实例组的选项，因此您可以将一个组中的 On-Demand 实例与另一个组中的竞价型实例一起使用以获得有保障的处理能力，从而以更低的成本更快地完成任务。您还可以混合多种实例类型以充分利用某种竞价型实例类型的定价优势。有关更多信息，请参阅 [什么时候应该使用竞价型实例？](emr-plan-instances-guidelines.md#emr-plan-spot-instances)。

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

## 可靠性
<a name="emr-benefits-reliability"></a>

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

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

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

## 安全性
<a name="emr-benefits-security"></a>

Amazon EMR 利用其他 Amazon 服务（例如 IAM 和 Amazon VPC）以及 Amazon EC2 密钥对等功能来帮助您保护集群和数据。

### IAM
<a name="emr-benefits-iam"></a>

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

此外，Amazon EMR 为 Amazon EMR 服务本身使用 IAM 角色，为实例使用 EC2 实例配置文件。这些角色授予服务和实例代表您访问其他 Amazon 服务的权限。Amazon EMR 服务及 EC2 实例配置文件都有默认角色。默认角色使用 Amazon 托管策略，这些策略是在您首次从控制台启动 EMR 集群并选择默认权限时自动为您创建的。您还可以从 Amazon CLI创建默认的 IAM 角色。如果您想改为管理权限 Amazon，则可以为服务和实例配置文件选择自定义角色。有关更多信息，请参阅 [配置 IAM 服务角色以获得 Amazon EMR 对 Amazon 服务和资源的权限](emr-iam-roles.md)。

### 安全组
<a name="emr-benefits-security-groups"></a>

Amazon EMR 使用安全组控制 EC2 实例的入站和出站流量。当您启动集群时，Amazon EMR 会为您的主实例使用一个安全组，并使用一个由您的 core/task实例共享的安全组。Amazon EMR 配置安全组规则以确保集群中实例间通信的安全。或者，您可以配置其他安全组并将其分配给您的主安全组和 core/task 实例，以获得更高级的规则。有关更多信息，请参阅 [使用 Amazon EMR 集群的安全组控制网络流量](emr-security-groups.md)。

### 加密
<a name="emr-benefits-encryption"></a>

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

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

有关更多信息，请参阅[使用 EMRFS 属性指定 Amazon S3 加密](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-emrfs-encryption.html)。

### Amazon VPC
<a name="emr-benefits-vpc"></a>

Amazon EMR 支持在 Amazon VPC 中的 Virtual Private Cloud（VPC）中启动集群。VPC 是一个隔离的虚拟网络 Amazon ，它能够控制网络配置和访问的高级方面。有关更多信息，请参阅 [在 VPC 中为 Amazon EMR 配置联网](emr-plan-vpc-subnet.md)。

### Amazon CloudTrail
<a name="emr-benefits-cloudtrail"></a>

Amazon EMR 与集成 CloudTrail ，可记录有关您的账户或代表您的 Amazon 账户提出的请求的信息。借助这些信息，您可以跟踪谁在何时访问了您的集群，以及他们发起请求的 IP 地址。有关更多信息，请参阅 [使用记录 Amazon EMR API 调用 Amazon CloudTrail](logging-using-cloudtrail.md)。

### Amazon EC2 密钥对
<a name="emr-benefits-key-pairs"></a>

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

## 监控
<a name="emr-benefits-monitoring"></a>

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

Amazon EMR 与集成 CloudWatch ，用于跟踪集群和集群内作业的性能指标。您可以基于多种指标（如集群是否处于空闲状态、已使用的存储的百分比）配置警报。有关更多信息，请参阅 [使用监控 Amazon EMR 指标 CloudWatch](UsingEMR_ViewingMetrics.md)。

## 管理界面
<a name="emr-what-tools"></a>

 有多种可以和 Amazon EMR 交互的方式：
+ **控制台**：图形用户界面，可用于启动和管理集群。借助这个界面，您可以填写各种 Web 窗体，指定待启动集群的详细信息、查看现有集群的详细信息、调试和终止集群。使用控制台是开始使用 Amazon EMR 的最简单的方式，您无需具备编程知识。您可以在线使用控制台：[https://console.aws.amazon.com/elasticmapreduce/home](https://console.amazonaws.cn/elasticmapreduce/home)。
+ **Amazon Command Line Interface (Amazon CLI)** — 在本地计算机上运行的客户端应用程序，用于连接 Amazon EMR 以及创建和管理集群。 Amazon CLI 包含一组功能丰富的特定于 Amazon EMR 的命令。您可以使用它来编写脚本，以实现启动和管理集群的自动化。如果您更喜欢使用命令行工作，则使用 Amazon CLI 是最佳选择。有关更多信息，请参阅 *Amazon CLI 命令参考*中的 [Amazon EMR](https://docs.amazonaws.cn/cli/latest/reference/emr/index.html)。
+ **软件开发工具包 (SDK)**：SDK 提供了调用 Amazon EMR 以创建和管理集群的函数。借助它们，您可以编写应用程序，用于自动处理集群的创建和管理流程。使用 SDK 是扩展或者自定义 Amazon EMR 的功能的理想选择。亚马逊 EMR 目前在以下软件开发工具包中可用：Go、Java、.NET（C\# 和 VB.NET）、PHP Node.js、Python 和 Ruby。有关这些 SDK 的更多信息，请参阅[适用于 Amazon的工具](https://www.amazonaws.cn/tools/)和 [Amazon EMR 示例代码和库](https://docs.amazonaws.cn/code-library/latest/ug/emr_code_examples.html)。
+ **Web 服务 API**：一种低层接口，可以用来直接使用 JSON 调用 Web 服务。使用 API 是创建调用 Amazon EMR 的自定义 SDK 的最佳选择。有关更多信息，请参阅 [Amazon EMR API 参考](https://docs.amazonaws.cn/ElasticMapReduce/latest/API/Welcome.html)。