我已在 Amazon EMR 上启用了托管扩展或者满足了调整大小指标,但集群仍未扩展。
解决方法
以下是即便已启用托管扩展或满足调整大小指标,但 EMR 集群仍未扩展的常见原因:
未达到 Amazon CloudWatch 指标中设置的阈值
自动扩展取决于 CloudWatch 指标。如果未达到扩大或缩小的相应阈值,则不会发生扩展。
检查 Amazon CloudWatch 中的 Amazon EMR 指标,以验证是否正在填充扩展规则中设置的指标。例如,验证是否已按扩展规则中所定义填充 ContainerPendingRatio、YARNMemoryAvailablePercentage 等。
以下是 Amazon EMR 指标未按预期在 CloudWatch 中填充的常见原因:
- 文件 /etc/hadoop/conf/hadoop-metrics2.properties 不存在或已损坏。例如,该文件可能已被自定义引导启动操作覆盖。
- 与指标相关的组件(如 Hadoop、YARN 等)可能存在问题。查看相应的应用程序日志,以查看是否存在错误。
- 对于托管扩展,请通过在主节点上运行 sudo systemctl status MetricsCollector 命令来验证 MetricsCollector 进程守护程序是否正在运行。
您使用的应用程序不是基于 YARN
诸如 Presto 之类不是基于 YARN 的应用程序使用基于 YARN 生成的指标的扩展方法。因此,即便 Presto 查询利用率过高,集群也不会扩展。如果您使用的应用程序不是基于 YARN,则使用手动扩展。例如,您可以设置 Amazon EMR 调整大小 API 来使用自定义 Presto 指标。
核心或任务实例组处于挂起或捕获状态
调整大小或扩展时,处于挂起或捕获状态的核心或任务实例组卡滞有关故障排查步骤,请参阅挂起状态。
重新配置会导致实例组处于捕获状态。有关更多信息,请参阅排查实例组重新配置问题。
EMR 中存在 HDFS 应用程序问题,从而导致扩展核心节点时出现问题
如果以下条件为 true,则最佳实践是保持核心节点固定:
- 您将数据存储于 Amazon Simple Storage Service (Amazon S3) 存储桶中,并且
- HDFS 利用率已降至最低。
仅扩展任务节点,以避免 HDFS 问题。
扩展核心节点所需的时间长于扩展任务节点所需的时间。这是因为核心节点包含其他用于存储 HDFS 数据的服务(Datanode)。停用 HDFS 数据湖需要时间。如果您的使用案例需要核心节点扩展且扩展卡滞,则可能是 HDFS 停用存在问题。请检查以下项目,以便对因 HDFS 停用而卡滞的扩展进行排查:
- 检查 HDFS 服务的运行状况(Namenode 和 Datanode)。
- 通过运行 hdfs dfsadmin -report 命令验证是否存在任何缺失、损坏或复制不足的块。
- 验证是否存在任何核心节点因磁盘、内存或 CPU 问题而运行不良。
- 确定是否已将 HDFS 复制因子设置为更高的数字,如 3 或 2。如果复制因子已设为 3 或 2 并且您尝试将核心节点缩减为 1,则扩展将会卡滞。这是因为必须保持最少副本。
请求的容量在 Amazon EMR 中不可用
如果请求的 Amazon Elastic Compute Cloud (Amazon EC2) 容量在 Amazon EMR 中不可用,则扩展会在超时后失败。如果扩展长时间卡滞并且您在 AWS CloudTrail 事件中收到容量不足错误,请手动调整大小。2 到 3 小时被视为是扩展卡滞较长一段时间。
相关信息
对实例组使用自动扩展和自定义策略
手动调整正在运行的集群的大小
在 Amazon EMR 中使用托管扩展
PrestoDB on Amazon EMR 的九大性能优化技巧