

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

# 了解如何创建和使用 Amazon EMR 集群
<a name="emr-overview"></a>

本主题概览 Amazon EMR 集群，包括：如何向集群提供工作、数据的处理方式、集群在处理期间经历的各种状态。

**Topics**
+ [

## 熟悉集群和节点
](#emr-overview-clusters)
+ [

## 向集群提交工作
](#emr-work-cluster)
+ [

## 处理数据
](#emr-overview-data-processing)
+ [

## 了解集群的生命周期
](#emr-overview-cluster-lifecycle)

## 熟悉集群和节点
<a name="emr-overview-clusters"></a>

*集群*是 Amazon EMR 的核心组件。集群是 Amazon Elastic Compute Cloud（Amazon EC2）实例的集合。集群中的每个实例称作*节点*。集群中的每个节点都有一个角色，称作*节点类型*。Amazon EMR 还在每个节点类型上安装不同的软件组件，在分布式应用程序（如 Apache Hadoop）中为每个节点赋予一个角色。

 Amazon EMR 中的节点类型有：
+ **主节点**：该节点管理集群，它通过运行软件组件来协调在其他节点之间分配数据和任务的过程以便进行处理。主节点跟踪任务的状态并监控集群的运行状况。每个集群有一个主节点，并且可以创建仅包含主节点的单节点集群。
+ **核心节点**：该节点具有运行任务并在集群上的 Hadoop Distributed File System（HDFS）中存储数据的软件组件。多节点集群至少具有一个核心节点。
+ **任务节点**：该节点具有仅运行任务但不在 HDFS 中存储数据的软件组件。任务节点是可选的。

## 向集群提交工作
<a name="emr-work-cluster"></a>

在 Amazon EMR 上运行集群时，可以通过几个选项指定需要完成的工作。
+ 在函数中提供要完成的工作的完整定义，您可以在创建集群时将其指定为步骤。对于那些处理固定的数据量并在处理完成时终止的集群，通常会采取这种做法。
+ 创建长时间运行的集群并使用 Amazon EMR 控制台、Amazon EMR API 或 AWS CLI 提交步骤，其中可能包含一个或多个任务。有关更多信息，请参阅 [将工作提交到 Amazon EMR 集群](emr-work-with-steps.md)。
+ 创建一个集群，根据需要使用 SSH 连接到主节点和其他节点，并使用安装的应用程序提供的界面以脚本或交互方式执行任务和提交查询。有关更多信息，请参阅[《Amazon EMR 版本指南》](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/)。

## 处理数据
<a name="emr-overview-data-processing"></a>

启动集群时，您需要选择要安装的框架和应用程序，以满足您的数据处理需求。要处理 Amazon EMR 集群中的数据，您可以直接向已安装的应用程序提交任务或查询，或在集群中运行*步骤*。

### 直接向应用程序提交任务
<a name="emr-overview-submitting-jobs"></a>

您可以直接向安装在 Amazon EMR 集群中的应用程序提交任务和与之交互。为此，您通常需要通过安全连接与主节点连接，并访问可用于直接运行在集群上的软件的接口和工具。有关更多信息，请参阅 [连接到 Amazon EMR 集群](emr-connect-master-node.md)。

### 运行步骤以处理数据
<a name="emr-overview-steps"></a>

您可以向 Amazon EMR 集群提交一个或多个有序的步骤。每个步骤都是一个工作单位，其中包含可由集群上安装的软件处理的数据操作指令。

 下面是一个使用四个步骤的示例处理操作：

1. 提交要处理的输入数据集。

1. 使用 Pig 程序处理第一个步骤的输出。

1. 使用 Hive 程序处理第二个输入数据集。

1. 写入一个输出数据集。

通常，在 Amazon EMR 中处理数据时，输入为以文件形式存储在您选择的底层文件系统（如 Amazon S3 或 HDFS）中的数据。数据从处理序列中的一个步骤传递到下一个。最后一步将输出数据写入指定位置，如 Amazon S3 存储桶。

 步骤按下面的序列运行：

1. 提交请求以开始处理步骤。

1. 所有步骤的状态均设为 **PENDING (待处理)**。

1. 序列中的第一个步骤启动时，其状态更改为 **RUNNING (正在运行)**。其它步骤仍处于 **PENDING (待处理)** 状态。

1. 第一个步骤完成后，其状态更改为 **COMPLETED (已完成)**。

1. 序列中的下一个步骤启动，其状态更改为 **RUNNING (正在运行)**。完成时，其状态更改为 **COMPLETED (已完成)**。

1. 对每个步骤重复这一模式，直到所有步骤均完成，处理结束。

下图显示了此步骤序列及随着处理的进行各步骤的状态更改。

![\[Amazon EMR 的序列图显示了不同的集群步骤状态。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/step-sequence.png)


如果处理期间步骤失败，其状态会更改为 **FAILED (失败)**。您可以确定接下来如何处理每个步骤。默认情况下，序列中的任何其余步骤设置为 **CANCELLED (已取消)**，并且如果前面的步骤失败则不会运行。您也可以选择忽略失败并允许继续执行其余步骤，或者立即终止集群。

下图显示了此步骤序列和处理期间某个步骤失败时默认的状态变更。

![\[Amazon EMR 的序列图显示了在前面的集群步骤失败时后续步骤会发生什么。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/step-sequence-failed.png)


## 了解集群的生命周期
<a name="emr-overview-cluster-lifecycle"></a>

 成功的 Amazon EMR 集群会遵循以下流程：

1. Amazon EMR 首先会根据您的规格，在集群中为每个实例预置 EC2 实例。有关更多信息，请参阅 [配置 Amazon EMR 集群硬件和联网](emr-plan-instances.md)。对于所有实例，Amazon EMR 使用 Amazon EMR 的默认 AMI 或您指定的自定义 Amazon Linux AMI。有关更多信息，请参阅 [使用自定义 AMI 为 Amazon EMR 集群配置提供更大的灵活性](emr-custom-ami.md)。在此期间，集群的状态是 `STARTING`。

1. Amazon EMR 在每个实例上运行您指定的*引导操作*。您可以使用引导操作安装自定义应用程序并执行所需的自定义。有关更多信息，请参阅 [创建引导操作以使用 Amazon EMR 集群安装其他软件](emr-plan-bootstrap.md)。在此期间，集群的状态是 `BOOTSTRAPPING`。

1. Amazon EMR 安装在您创建集群时指定的本机应用程序，例如，Hive、Hadoop 和 Spark 等。

1. 在成功完成引导操作并安装本机应用程序后，集群状态为`RUNNING`。此时，您可以连接到集群实例，集群将按顺序运行在创建集群时指定的任何步骤。您可以提交额外的步骤，这些步骤在任何以前的步骤完成后运行。有关更多信息，请参阅 [将工作提交到 Amazon EMR 集群](emr-work-with-steps.md)。

1. 在成功运行步骤后，集群将进入`WAITING`状态。如果集群配置为在完成最后一个步骤后自动终止，则会进入 `TERMINATING` 状态然后进入 `TERMINATED` 状态。如果集群配置为等待，您必须在不再需要它时手动将其关闭。手动关闭集群后，它先进入 `TERMINATING` 状态，再进入 `TERMINATED` 状态。

集群生命周期中的故障将导致 Amazon EMR 终止集群及其所有实例，除非您启用了终止保护。如果集群由于故障而终止，则会删除集群上存储的任何数据并将集群状态设置为`TERMINATED_WITH_ERRORS`。如果启用了终止保护，您可以从集群中检索数据，然后删除终止保护并终止集群。有关更多信息，请参阅 [使用终止保护功能防止 Amazon EMR 集群意外关闭](UsingEMR_TerminationProtection.md)。

下图显示的是集群的生命周期以及生命周期的每个阶段是如何映射到具体的集群状态的。

![\[Amazon EMR 图显示的是集群的生命周期以及生命周期的每个阶段是如何映射到具体的集群状态的。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/emr-cluster-lifecycle.png)
