概述Amazon EMR - Amazon EMR

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

概述Amazon EMR

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

了解集群和节点

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

Amazon EMR 中的节点类型有:

  • 主节点:该节点管理集群,它通过运行软件组件来协调在其他节点之间分配数据和任务的过程以便进行处理。主节点跟踪任务的状态并监控集群的健康状况。每个集群具有一个主节点,并且可以创建仅包含主节点的单节点集群。

  • 核心节点:该节点具有运行任务并在集群上的 Hadoop 分布式文件系统 (HDFS) 中存储数据的软件组件。多节点集群至少具有一个核心节点。

  • 任务节点:该节点具有仅运行任务但不在 HDFS 中存储数据的软件组件。任务节点是可选的。

下图中的集群包含一个主节点和四个核心节点。


					的集群图,显示 EMR 集群中主节点与核心节点之间的关系。Amazon EMR

向集群提交工作

在 Amazon EMR 上运行集群时,可以通过几个选项指定需要完成的工作。

  • 在函数中提供要完成的工作的完整定义,您可以在创建集群时将其指定为步骤。对于那些处理固定的数据量并在处理完成时终止的集群,通常会采取这种做法。

  • 创建一个长时间运行的集群并使用 Amazon EMR 控制台、Amazon EMR API 或 AWS CLI 提交包含一个或多个作业的步骤。有关更多信息,请参阅 向集群提交工作.

  • 创建一个集群,根据需要使用 SSH 连接到主节点和其他节点,并使用安装的应用程序提供的界面以脚本或交互方式执行任务和提交查询。有关更多信息,请参阅Amazon EMR 版本指南.

处理数据

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

直接向应用程序提交作业

您可以直接向安装在 Amazon EMR 集群中的应用程序提交作业和与之交互。为此,您通常需要通过安全连接与主节点连接,并访问可用于直接运行在集群上的软件的接口和工具。有关更多信息,请参阅 连接到群集.

运行步骤以处理数据

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

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

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

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

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

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

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

步骤按下面的序列运行:

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

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

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

  4. 第一个步骤完成后,其状态更改为 COMPLETED (已完成).

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

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

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


					显示不同集群步骤状态的顺序图表。Amazon EMR

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

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


					的序列图表,显示之前的集群步骤失败时后续步骤会发生什么。Amazon EMR

理解集群的生命周期

成功的 Amazon EMR 集群会遵循这个流程:

  1. Amazon EMR根据您指定的设置, 先为每个实例预置集群中的 EC2 实例。有关更多信息,请参阅 配置集群硬件和联网. 对于所有实例,Amazon EMR 使用 Amazon EMR 的默认 AMI 或您指定的自定义 Amazon Linux AMI。有关更多信息,请参阅 使用自定义 AMI. 在这个期间,集群的状态是 STARTING.

  2. Amazon EMR 在每个实例上运行您指定的引导操作 您可以使用引导操作安装自定义应用程序并执行所需的自定义。有关更多信息,请参阅 Create Bootstrap Actions to Install Additional Software. 在这个期间,集群的状态是 BOOTSTRAPPING.

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

  4. 在成功完成引导操作并安装本机应用程序后,集群状态为RUNNING. 此时,您可以连接到集群实例,集群将按顺序运行在创建集群时指定的任何步骤。您可以提交额外的步骤,这些步骤在任何以前的步骤完成后运行。有关更多信息,请参阅 使用 AWS CLI 和控制台执行步骤.

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

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

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


					显示集群生命周期以及生命周期的每个阶段如何映射到特定集群状态的 Amazon EMR 图。