EMR上节点类型

EMR 中的节点类型如下:

  • 主节点:管理集群的节点,运行软件组件来协调数据和任务在其他节点之间的分配。主节点跟踪任务的状态并监控集群的健康状况。每个集群都有一个主节点,也可以创建只有主节点的单节点集群。
  • 核心节点:在 HDFS 上运行任务和存储数据的节点。多节点集群至少有一个核心节点。
  • 任务节点:只运行任务而不在 HDFS 上存储数据的节点。任务节点是可选的。

Task nodes

您可以使用task nodes来增强并行计算任务的能力,例如MapReduce task和 Spark executor。任务节点不运行Data Node守护进程,也不将数据存储在 HDFS 中。与core node一样,可以通过将EC2 实例添加到现有instance group或修改instance fleet的目标容量来将task node添加到集群。

通过instance group配置,最多可以拥有 48 个任务实例组。通过这种方式添加实例组的功能,可以混合使用 EC2 实例类型和定价选项,例如按需实例和 Spot 实例。这使您能够灵活地以经济高效的方式响应工作负载需求。

通过instance fleet配置,内置了混合实例类型和购买选项的功能,因此只有一个任务实例队列。

由于 Spot 实例通常用于运行task nodes,因此EMR 具有用于调度 YARN 作业的默认功能,以便当 Spot 实例上运行的任务节点终止时,运行的作业不会失败。 EMR 通过允许application master仅在core node上运行来实现此目的。application master控制正在运行的作业,并且需要在作业的生命周期内保持活动状态。

5.19.0 及更高版本使用内置的 YARN 节点标签 功能来实现这个功能。默认情况下会配置“yarn-site”和“capacity-scheduler”,以便 YARN capacity-scheduler 和fair-scheduler 利用节点标签。 EMR 自动使用“CORE”标签来标记核心节点,并设置属性,以便仅在具有 CORE 标签的节点上调度application master。手动修改yarn-site和capacity-scheduler 配置中的相关属性,或直接修改关联的 XML 文件中的相关属性,可能会破坏此功能或修改此功能。

从 Amazon EMR 6.x 版本系列开始,YARN node label功能默认处于禁用状态。默认情况下,application master可以在核心节点和任务节点上运行。您可以通过配置以下属性来启用 YARN 节点标签功能:

  • yarn.node-labels.enabled: true
  • yarn.node-labels.am.default-node-label-expression: 'CORE'

集群生命周期

EMR集群遵循以下过程:

  1. EMR首先根据我们的规格在集群中配置EC2实例。在所有实例上,EMR使用EMR的默认AMI或我们指定的自定义Amazon Linux AMI。在此阶段,集群状态为STARTING

  2. EMR运行我们指定的引导操作。我们可以使用引导操作来安装自定义应用程序并执行所需的自定义操作。在此阶段,集群状态为BOOTSTRAPPING

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

  4. 引导操作成功完成并安装本机应用程序后,集群状态为RUNNING。此时,我们可以连接到集群实例,集群顺序运行我们在创建集群时指定的任何步骤。我们可以提交其他步骤,这些步骤将在任何先前步骤完成后运行。

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

集群生命周期中的故障会导致Amazon EMR终止集群及其所有实例,除非我们启用了终止保护。如果集群因故障而终止,存储在集群上的任何数据都将被删除,集群状态将设置为TERMINATED_WITH_ERRORS。如果我们启用了终止保护,我们可以从集群中检索数据,然后删除终止保护并终止集群。