本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EMR 集群以 NO_ _ LEFT 和核心节点 _BY SLAVE _ 终止 FAILED MASTER
通常,发生这一现象是因为禁用了终止保护,而且所有核心节点都超过了 yarn-site
配置分类(对应于 yarn-site.xml
文件)中最大利用率阈值指定的磁盘存储容量。默认情况下,该值为 90%。当核心节点的磁盘利用率超过利用率阈值时,YARN NodeManager 运行状况服务会将该节点报告为UNHEALTHY
。当节点处于这种状态时,Amazon d EMR eny 会列出该节点并且不会为其分配YARN容器。如果该节点在 45 分钟内保持运行状况不佳,Amazon 会将要终止的关联亚马逊EC2实例EMR标记为FAILED_BY_MASTER
。当所有与核心节点关联的 Amazon EC2 实例都被标记为终止时,集群将以状态终止,NO_SLAVE_LEFT
因为没有资源可以执行任务。
如果一个核心节点超过磁盘利用率,则可能会导致连锁反应。如果单个节点因而超过磁盘利用率阈值HDFS,则其他节点也可能接近该阈值。第一个节点超过了磁盘使用率阈值,因此 Amazon d EMR eny 将其列出。这增加了其余节点的磁盘使用负担,因为它们开始在彼此之间复制在被拒绝名单的节点上丢失HDFS的数据。每个节点随后都会以相同的方式进入 UNHEALTHY
状态,并且集群最终会终止。
最佳实践和建议
为集群硬件配置充足的存储容量
创建集群时,请确保有足够的核心节点,并且每个节点都有足够的实例存储和EBS存储卷HDFS。有关更多信息,请参阅 计算集群所需的HDFS容量。您也可以手动或使用 Auto Scaling 功能,将核心实例添加到现有实例组。新实例与实例组中的其它实例具有相同的存储配置。有关更多信息,请参阅使用 Amazon EMR 集群扩展来适应不断变化的工作负载。
启用终止保护
启用终止保护。这样,如果核心节点被列为拒绝,则可以使用连接到关联的 Amazon EC2 实例,SSH进行故障排除和恢复数据。如果您启用终止保护,请注意,Amazon EMR 不会用新EC2实例替换 Amazon 实例。有关更多信息,请参阅 使用终止保护来保护您的 Amazon EMR 集群免遭意外关闭。
为该MRUnhealthyNodes CloudWatch 指标创建警报
此指标会报告其中报告了 UNHEALTHY
状态的节点的数量。它等同于YARN指标mapred.resourcemanager.NoOfUnhealthyNodes
。您可以为此警报设置通知,在节点维持不正常状态到达 45 分钟计时之前提醒您。有关更多信息,请参阅使用监控亚马逊EMR指标 CloudWatch。
使用 yarn-site 调整设置
下面的设置可以根据您的应用程序要求进行调整。例如,您可能需要通过提高 yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage
的值,来提高节点报告为 UNHEALTHY
的磁盘利用率阈值。
在使用 yarn-site
配置分类创建集群时,您可以设置这些值。有关更多信息,请参阅 Amazon EMR 发行指南中的配置应用程序。您也可以使用连接到与核心节点关联的 Amazon EC2 实例SSH,然后/etc/hadoop/conf.empty/yarn-site.xml
使用文本编辑器在中添加值。进行更改后,必须按 hadoop-yarn-nodemanager如下所示重新启动。
重要
重新启动 NodeManager 服务时,除非在创建集群时将其设置yarn.nodemanager.recovery.enabled
为true
使用yarn-site
配置分类,否则活动YARN容器将被终止。您还必须使用 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(默认情况下,在亚马逊中)和 yarn.nodemanager.log-dirs(默认情况下, |
|
90.0 |
磁盘标记为故障后允许的磁盘空间利用率的最大百分比。值范围是 0.0 到 100.0。如果该值大于或等于 100,则会 NodeManager 检查磁盘是否已满。这适用于 |
|
0 |
磁盘上可供使用的最小空间。这适用于 |