集群因 NO_SLAVE_LEFT 和核心节点 FAILED_BY_MASTER 而终止 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

集群因 NO_SLAVE_LEFT 和核心节点 FAILED_BY_MASTER 而终止

通常,发生这一现象是因为禁用了终止保护,而且所有核心节点都超过了 yarn-site 配置分类(对应于 yarn-site.xml 文件)中最大利用率阈值指定的磁盘存储容量。默认情况下,该值为 90%。当核心节点的磁盘利用率超出此利用率阈值时,则 YARN NodeManager 运行状况服务会将节点报告为 UNHEALTHY。如果此节点处于此状态,Amazon EMR 会将此节点列入拒绝名单且不会向其分配 YARN 容器。如果此节点保持不正常状态 45 分钟,则 Amazon EMR 会把要终止的相关 Amazon EC2 实例标记为 FAILED_BY_MASTER。当与核心节点关联的所有 Amazon EC2 实例都被标记为终止时,集群将因没有资源用于执行任务而以 NO_SLAVE_LEFT 状态终止。

如果一个核心节点超过磁盘利用率,则可能会导致连锁反应。如果单个节点因 HDFS 而超过磁盘利用率阈值,那么其它节点很可能同样会接近阈值。第一个节点超过磁盘利用率阈值时,Amazon EMR 会将其列入拒绝名单。这会增加剩余节点的磁盘利用率负担,因为节点开始在自身之间复制其在已列入拒绝名单的节点上丢失的 HDFS 数据。每个节点随后都会以相同的方式进入 UNHEALTHY 状态,并且集群最终会终止。

最佳实践和建议

为集群硬件配置充足的存储容量

创建集群时,请确保有足够的核心节点并且每个节点都为 HDFS 提供足够的实例存储空间和 EBS 存储卷。有关更多信息,请参阅计算集群的必需的 HDFS 容量。您也可以手动或使用 Auto Scaling 功能,将核心实例添加到现有实例组。新实例与实例组中的其它实例具有相同的存储配置。有关更多信息,请参阅使用集群扩展

启用终止保护

启用终止保护。这样一来,如果核心节点被列入拒绝名单,您可以使用 SSH 连接到关联的 Amazon EC2 实例进行故障排查并恢复数据。如果启用终止保护,请注意,Amazon EMR 不会将该 Amazon EC2 实例替换为新实例。有关更多信息,请参阅使用终止保护

为 MRUnhealthyNodes CloudWatch 指标创建警报

此指标会报告其中报告了 UNHEALTHY 状态的节点的数量。此指标等同于 YARN 指标 mapred.resourcemanager.NoOfUnhealthyNodes。您可以为此警报设置通知,在节点维持不正常状态到达 45 分钟计时之前提醒您。有关更多信息,请参阅使用 CloudWatch 指标监控 Amazon EMR 指标

使用 yarn-site 调整设置

下面的设置可以根据您的应用程序要求进行调整。例如,您可能需要通过提高 yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage 的值,来提高节点报告为 UNHEALTHY 的磁盘利用率阈值。

在使用 yarn-site 配置分类创建集群时,您可以设置这些值。有关更多信息,请参阅《Amazon EMR 版本指南》中的配置应用程序。您还可以使用 SSH 连接到与核心节点关联的 Amazon EC2 实例,然后使用文本编辑器在 /etc/hadoop/conf.empty/yarn-site.xml 添加值。完成更改后,您必须按照以下方式重新启动 hadoop-yarn-nodemanager。

重要

当您重启 NodeManager 服务时,活动的 YARN 容器会被终止,除非在您创建集群时使用 yarn-site 配置分类将 yarn.nodemanager.recovery.enabled 设为 true。您还必须使用 yarn.nodemanager.recovery.dir 属性指定存储容器状态的目录。

sudo /sbin/stop hadoop-yarn-nodemanager sudo /sbin/start hadoop-yarn-nodemanager

有关当前 yarn-site 属性和默认值的更多信息,请参阅 Apache Hadoop 文档中的 YARN 默认设置

属性 默认值 描述

yarn.nodemanager.disk-health-checker.interval-ms

120000

磁盘运行状况检查程序运行的频率(以秒为单位)。

yarn.nodemanager.disk-health-checker.min-healthy-disks

0.25

NodeManager 的运行状况必须正常才能启动新容器的最小磁盘数量。这对应于 yarn.nodemanager.local-dirs(默认情况下,Amazon EMR 中的 /mnt/yarn)和 yarn.nodemanager.log-dirs(默认情况下,为 /var/log/hadoop-yarn/containers,与 Amazon EMR 中的 mnt/var/log/hadoop-yarn/containers 符号链接)。

yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage

90.0

磁盘标记为故障后允许的磁盘空间利用率的最大百分比。值范围是 0.0 到 100.0。如果值大于或等于 100,则 NodeManager 会检查整个磁盘。这适用于 yarn-nodemanager.local-dirsyarn.nodemanager.log-dirs

yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb

0

磁盘上可供使用的最小空间。这适用于 yarn-nodemanager.local-dirsyarn.nodemanager.log-dirs