了解如何创建和使用 Amazon EMR 集群 - Amazon EMR

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

了解如何创建和使用 Amazon EMR 集群

本主题概述了 Amazon EMR 集群,包括如何向集群提交工作、如何处理数据,以及集群在处理过程中所经历的各种状态。

熟悉集群和节点

Amazon 的核心组成部分EMR是集群。集群是亚马逊弹性计算云 (AmazonEC2) 实例的集合。集群中的每个实例称作节点。集群中的每个节点都有一个角色,称作节点类型。Amazon EMR 还在每种节点类型上安装不同的软件组件,从而让每个节点在像 Apache Hadoop 这样的分布式应用程序中扮演一个角色。

Amazon 中的节点类型EMR如下:

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

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

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

向集群提交工作

在 Amazon 上运行集群时EMR,您可以通过多种方式来指定需要完成的工作。

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

  • 创建长时间运行的集群并使用亚马逊EMR控制台EMRAPI、Amazon 或 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. 对每个步骤重复这一模式,直到所有步骤均完成,处理结束。

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

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

如果某个步骤在处理过程中失败,则其状态将更改为FAILED。您可以确定接下来如何处理每个步骤。默认情况下,序列中的所有剩余步骤都设置为 CANCELLED,如果前一个步骤失败,则不运行。您也可以选择忽略失败并允许继续执行其余步骤,或者立即终止集群。

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

Amazon 序列图EMR显示了前一个集群步骤失败时后续步骤会发生什么。

了解集群的生命周期

成功的 Amazon EMR 集群遵循以下过程:

  1. Amazon EMR EC2 首先根据您的规格在集群中为每个实例配置实例。有关更多信息,请参阅 配置集群硬件和联网。对于所有实例,亚马逊都EMR使用亚马逊的默认设置AMIEMR或您指定的自定义 Amazon Linux AMI。有关更多信息,请参阅 使用自定义AMI为集群配置提供更大的灵活性。在此期间,集群的状态是 STARTING

  2. Amazon 会EMR运行您在每个实例上指定的引导操作。您可以使用引导操作安装自定义应用程序并执行所需的自定义。有关更多信息,请参阅 创建引导操作以安装其它软件。在此期间,集群的状态是 BOOTSTRAPPING

  3. 亚马逊EMR会安装您在创建集群时指定的原生应用程序,例如 Hive、Hadoop、Spark 等。

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

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

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

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

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