了解 Amazon EMR 中的节点类型:主节点、核心节点和任务节点
通过此节,您可以了解 Amazon EMR 如何使用其中每个节点类型并将其作为集群容量规划的基础。
主节点
主节点管理集群,通常运行分布式应用程序的主要组件。例如,主节点运行 YARN Resource Manager 服务以管理应用程序的资源。此外,它还运行 HDFS NameNode 服务、跟踪提交到集群的任务的状态,并监控实例组的运行状况。
要监控集群的进度并直接与应用程序交互,您可以作为 Hadoop 用户通过 SSH 连接到主节点。有关更多信息,请参阅 使用 SSH 连接到 Amazon EMR 集群主节点。通过连接到主节点,您可以直接访问目录和文件,如 Hadoop 日志文件。有关更多信息,请参阅 查看 Amazon EMR 日志文件。您还可以查看应用程序以主节点上运行的网站形式发布的用户界面。有关更多信息,请参阅 查看 Amazon EMR 集群上托管的 Web 界面。
注意
使用 Amazon EMR 5.23.0 及更高版本,您可以启动具有三个主节点的集群,以支持应用程序的高可用性(如 YARN Resource Manager、HDFS NameNode、Spark、Hive 和 Ganglia)。使用此功能,主节点不再发生潜在的单点故障。如果其中一个主节点出现故障,Amazon EMR 会自动故障转移到备用主节点,并将出现故障的主节点替换为具有相同配置和引导操作的新主节点。有关更多信息,请参阅计划和配置主节点。
核心节点
核心节点由主节点进行管理。核心节点运行数据节点守护程序以将数据存储作为 Hadoop Distributed File System(HDFS)的一部分进行协调。它们还运行任务跟踪守护程序,并对安装的应用程序所需的数据执行其它并行计算任务。例如,核心节点运行 YARN NodeManager 守护程序、Hadoop MapReduce 任务和 Spark 执行器。
每个集群只能有一个核心实例组或实例机群,但可在实例组或实例机群中的多个 Amazon EC2 实例上运行多个节点。对于实例组,您可以在集群运行时添加和删除 Amazon EC2 实例。您还可以设置弹性伸缩,以根据指标的值来添加实例。有关使用实例组配置添加和删除 Amazon EC2 实例的更多信息,请参阅使用 Amazon EMR 集群扩展来适应不断变化的工作负载。
对于实例集,您可以通过为按需实例与竞价型实例修改实例集的目标容量来高效地添加和删除实例。有关目标容量的更多信息,请参阅实例集选项。
警告
从运行的核心节点删除 HDFS 守护程序或终止核心节点将面临数据丢失的风险。配置核心节点以使用竞价型实例时,请务必小心。有关更多信息,请参阅什么时候应该使用竞价型实例?。
任务节点
您可以使用任务节点来支持对数据执行并行计算任务,例如 Hadoop MapReduce 任务和 Spark 执行程序。任务节点不运行数据节点守护程序,也不在 HDFS 中存储数据。与使用核心节点一样,您可以将任务节点添加到集群,方式是将 Amazon EC2 实例添加到现有的统一实例组或修改任务实例机群的目标容量。
对于统一实例组配置,您最多可拥有 48 个任务实例组。通过此方式添加实例组,使您能够将 Amazon EC2 实例类型和定价选项混合在一起,例如按需型实例和 Spot 实例。这使您能够灵活且经济有效地响应工作负载要求。
对于实例集配置,提供了混合实例类型和购买选项的内置功能,因此仅有一个任务实例集。
由于竞价型实例通常用于运行任务节点,而 Amazon EMR 具有调度 YARN 任务的默认功能,因此在竞价型实例上运行的任务节点终止时,正在运行的任务不会失败。Amazon EMR 通过允许应用程序主进程仅在核心节点上运行来实现这一目标。应用程序主进程控制正在运行的任务,并且需要在任务的整个生命周期内保持活动状态。
Amazon EMR 发行版 5.19.0 及更高版本使用内置 YARN 节点标签yarn-site
中的属性和 capacity-scheduler
配置分类是默认配置,以便 YARN capacity-scheduler 和 fair-scheduler 利用节点标注。Amazon EMR 自动为核心节点添加 CORE
标注,并设置属性,以便只在具有 CORE 标签的节点上安排应用程序主节点。手动修改 yarn-site 和 capacity-scheduler 配置分类中的相关属性,或直接在关联的 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 发行版系列开始,Amazon EMR 按实例市场类型(如按需型或竞价型)为实例分配 YARN 节点标签。您可以配置以下属性,来启用节点标签并将应用程序进程限制为 ON_DEMAND:
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 EMR 7.2 及更高版本,如果您的集群使用带有节点标签的托管扩展,Amazon EMR 将尝试根据应用程序进程和执行程序需求独立扩展集群。
例如,如果使用 Amazon EMR 7.2 或更高版本,并将应用程序进程限制为 ON_DEMAND
节点,则当应用程序进程需求增加时,托管扩展会扩展 ON_DEMAND
节点。同样,如果将应用程序进程限制为 CORE
节点,则当应用程序进程需求增加时,托管扩展会扩展 CORE
节点。
有关特定属性的信息,请参阅用于防止因任务节点竞价型实例终止而导致任务失败的 Amazon EMR 设置。