了解节点类型:主节点、核心节点和任务节点 - Amazon EMR

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

了解节点类型:主节点、核心节点和任务节点

使用本节了解 Amazon 如何EMR使用每种节点类型,并以此作为集群容量规划的基础。

主节点

主节点管理集群,通常运行分布式应用程序的主要组件。例如,主节点运行该YARNResourceManager 服务来管理应用程序的资源。它还运行HDFSNameNode 服务,跟踪提交到集群的任务的状态,并监控实例组的运行状况。

要监控集群的进度并直接与应用程序交互,您可以以 Hadoop 用户SSH身份连接到主节点。有关更多信息,请参阅 使用 Connect 连接到主节点 SSH。通过连接到主节点,您可以直接访问目录和文件,如 Hadoop 日志文件。有关更多信息,请参阅 查看日志文件。您还可以查看应用程序以主节点上运行的网站形式发布的用户界面。有关更多信息,请参阅 查看 Amazon EMR 集群上托管的网页界面

注意

在 Amazon EMR 5.23.0 及更高版本中,您可以启动包含三个主节点的集群,以支持YARN资源管理器、Spark HDFS NameNode、Hive 和 Ganglia 等应用程序的高可用性。使用此功能,主节点不再发生潜在的单点故障。如果其中一个主节点出现故障,Amazon EMR 会自动故障转移到备用主节点,并将故障主节点替换为具有相同配置和引导操作的新主节点。有关更多信息,请参阅计划和配置主节点

核心节点

核心节点由主节点进行管理。核心节点运行数据节点守护程序来协调作为 Hadoop 分布式文件系统 () 一部分的数据存储。HDFS它们还运行任务跟踪守护程序,并对安装的应用程序所需的数据执行其它并行计算任务。例如,核心节点运行YARNNodeManager 守护程序、Hadoop MapReduce 任务和 Spark 执行程序。

每个集群只有一个核心实例组或实例队列,但可以在实例组或实例队列中的多个 Amazon EC2 实例上运行多个节点。通过实例组,您可以在集群运行时添加和删除 Amazon EC2 实例。您还可以设置弹性伸缩,以根据指标的值来添加实例。有关使用实例组配置添加和移除 Amazon EC2 实例的更多信息,请参阅使用 Amazon EMR 集群扩展来适应不断变化的工作负载

对于实例集,您可以通过为按需实例与竞价型实例修改实例集的目标容量来高效地添加和删除实例。有关目标容量的更多信息,请参阅实例集选项

警告

从正在运行的核心节点中移除HDFS守护程序或终止核心节点可能会导致数据丢失。配置核心节点以使用竞价型实例时,请务必小心。有关更多信息,请参阅什么时候应该使用竞价型实例?

任务节点

您可以使用任务节点来增强能力,以便对数据执行并行计算任务,例如 Hadoop MapReduce 任务和 Spark 执行器。任务节点不运行数据节点守护程序,也不在其中存储数据。HDFS与核心节点一样,您可以通过将 Amazon EC2 实例添加到现有的统一实例组或修改任务实例队列的目标容量来向集群添加任务节点。

对于统一实例组配置,您最多可拥有 48 个任务实例组。通过这种方式添加实例组,您可以混合 Amazon EC2 实例类型和定价选项,例如按需实例和竞价实例。这使您能够灵活且经济有效地响应工作负载要求。

对于实例集配置,提供了混合实例类型和购买选项的内置功能,因此仅有一个任务实例集。

由于竞价型实例通常用于运行任务节点,因此 Amazon EMR 具有调度YARN任务的默认功能,因此,当竞价型实例上运行的任务节点终止时,运行的任务不会失败。Amazon EMR 通过允许应用程序主进程仅在核心节点上运行来实现这一目标。应用程序主进程控制正在运行的任务,并且需要在任务的整个生命周期内保持活动状态。

Amazon 5.19.0 及更高EMR版本使用内置的YARN节点标签功能来实现这一点。(早期版本使用代码补丁)。yarn-sitecapacity-scheduler配置分类中的属性是默认配置的,因此YARN容量调度器和公平调度器可以利用节点标签。Amazon EMR 会自动使用CORE标签标记核心节点,并设置属性,以便仅在带有该CORE标签的节点上调度应用程序主节点。手动修改纱线站点和容量调度器配置分类中的相关属性,或者直接修改关联XML文件中的相关属性,可能会破坏此功能或修改此功能。

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

  • yarn.node-labels.enabled: true

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

从 Amazon EMR 7.x 版本系列开始,亚马逊根据实例的市场类型(例如按需或竞价)为其EMR分配YARN节点标签。您可以通过配置以下属性来启用节点标签并将应用程序进程限制DEMAND为 ON_:

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

如果您使用的是 Amazon EMR 7.0 或更高版本,则可以使用以下配置将申请流程限制到带有CODE标签的节点:

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

对于 Amazon 7.2 及更高EMR版本,如果您的集群使用带有节点标签的托管扩展,Amazon EMR 将尝试根据应用程序流程和执行者需求独立扩展集群。

例如,如果您使用 Amazon 7.2 或更高EMR版本,并将申请流程限制在ON_DEMAND节点上,则当应用程序流程需求增加时,托管扩展会扩展ON_DEMAND节点。同样,如果将应用程序进程限制在CORE节点上,则当应用程序进程需求增加时,托CORE管扩展会扩展节点。

有关特定属性的信息,请参阅Amazon EMR 设置以防止由于任务节点竞价型实例终止而导致任务失败