为什么我的 Amazon EMR 集群无法启动,并出现错误“引导操作返回非零返回代码”?

1 分钟阅读
0

我为 Amazon EMR 集群创建了一个自定义引导操作。该集群无法启动,并且引导操作返回类似于以下内容的错误:“引导操作 1 返回非零返回代码”。

简短描述

引导操作在 Amazon EMR 在集群中预置 Amazon Elastic Compute Cloud (Amazon EC2) 实例后运行。当引导操作失败时,Amazon EMR 将终止该实例。有关更多信息,请参阅了解集群生命周期

如果引导操作由于引导脚本中的错误而失败,则集群将无法启动。有关更多信息,请参阅引导操作基础知识

解决方法

要确定引导操作失败的原因,请查看引导操作的 stderr 日志。这些日志位于您之前在创建 Amazon EMR 集群时配置的 Amazon Simple Storage Service (Amazon S3) 路径或 LogUri 中。

示例:s3://example-log-location/example-cluster-id/node/example-instance-id/bootstrap-actions/

如果在查看 stderr 日志后无法确定脚本失败的原因,请修改脚本以提供其他调试信息。例如,在 bash 脚本中设置 -ex 参数。这允许您在引导操作日志文件中查看 bash 脚本流。

#!/bin/bash
set -x -e

**注意:**如果失败的引导操作不是您创建的引导操作(例如,如果您创建了六个引导操作,而错误消息是“引导操作 7 失败,显示非零退出代码”),则该错误消息表示 Amazon EMR 无法安装应用程序或启动服务。

要对此问题进行故障排除,请查看 Amazon EMR 预置日志。Amazon EMR 使用 Puppet 在集群上安装和配置应用程序。日志可能提供有关预置集群期间所导致错误的信息。

如果您将日志配置为推送到 S3,则可以在集群或 S3 上访问这些日志。日志存储在磁盘上的 /var/log/provision-node/apps-phase/0/example-UUID}/puppet.log 以及 s3://example-log-location/example-cluster-id/node/example-instance-id/provision-node/apps-phase/0/{UUID}/puppet.log.gz 中。


相关信息

使用自定义引导操作

相关视频

AWS 官方
AWS 官方已更新 1 年前