为什么我的 Amazon EMR 集群终止并显示 "application provisioning failed" 错误?
我的 Amazon EMR 集群终止并显示 "application provisioning failed" 错误。
解决方法
当 Amazon EMR 在启动 Amazon EMR 集群时无法安装、配置或启动指定软件时,您可能会收到 "application provisioning failed" 错误。
查看 Amazon EMR 预置日志
Amazon EMR 将预置日志存储在启动集群时指定的 Amazon Simple Storage Service (Amazon S3) 存储桶中。
完成以下步骤:
- 打开 Amazon EMR 控制台。
- 在导航窗格中,选择 Clusters(集群)。然后,选择出现故障的 Amazon EMR 集群以查看集群详细信息。
- 在 Summary(摘要)部分中,选择 Terminated with errors(因错误而终止),并记下错误消息中包含的主节点 ID。
- 在 Cluster logs(集群日志)部分中,选择 Amazon S3 location(Amazon S3 位置)URL。
- 按照以下路径导航到您的 UUID 文件夹:
node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/。
**注意:**请将 example-primary-node-ID 替换为您的主节点 ID。将 example-UUID 替换为您的 UUID。 - 在结果列表中,选择 puppet.log.gz,然后选择 Open(打开),以在新的浏览器标签页中查看预置。
确定预置日志中的失败原因
不支持的配置参数可能会导致错误。主机名错误、密码错误或一般操作系统问题也可能导致错误。在日志中搜索相关关键词,包括 "error"、"err" 或 "fail"。
连接到使用 Amazon RDS 实例的外部元存储时出现问题
您可以将部分 Amazon EMR 应用程序(例如 Apache Hive、Hue 或 Apache Oozie)配置为将数据存储在外部数据库(例如 Amazon Relational Database Service (Amazon RDS))中。当您与外部数据库连接出现问题时,会收到一条错误消息。
来自 Hive 的错误消息示例:
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version. 2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): Underlying cause: java.sql.SQLNonTransientConnectionException : Could not connect to address=(host=hostname)(port=3306)(type=master) : Socket fail to connect to host:hostname, port:3306. hostname 2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): SQL Error code: -1
要解决此类错误,请执行以下操作:
- 验证 Amazon RDS 实例的主机名、用户、密码和数据库是否正确。
- 验证 Amazon RDS 实例安全组入站规则是否允许来自 Amazon EMR 主节点安全组的连接。
连接到外部 KDC 时出现问题
Amazon EMR 允许您配置外部 KDC 以添加额外的安全层。您也可以创建与 Active Directory 服务器的信任关系。如果您在联系 KDC 或尝试加入域名时出现问题,则会收到一条错误消息。
来自 Puppet 的错误消息示例:
2022-11-26 03:02:01 +0000 Puppet (err): 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0] 2022-11-26 03:02:01 +0000 /Stage[main]/Kerberos::Ad_joiner/Exec[realm_join]/returns (err): change from 'notrun' to ['0'] failed: 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]
要解决此类错误,请执行以下操作:
- 检查 Kerberos 领域的拼写是否正确。
- 检查输入的 KDC 管理密码是否正确。
- 检查 Active Directory 加入用户和密码的拼写是否正确。
- 验证 Active Directory 是否包含加入用户,以及用户是否具有正确的权限。
- 对于在 Amazon Elastic Compute Cloud (Amazon EC2) 上托管的 KDC 和 Active Directory,请验证 KDC 和 Active Directory 安全组入站规则是否允许来自 Amazon EMR 主节点安全组的连接。
- 对于在 Amazon EC2 之外托管的 KDC 和 Active Directory,请验证 KDC 和 Active Directory 是否允许来自 Amazon EMR 集群虚拟私有云 (VPC) 和子网的连接。
启动 YARN ResourceManager、Hadoop NameNode 或 Spark History Server 等服务时出现问题
Amazon EMR 允许您在启动 Amazon EMR 集群时为所有应用程序创建自定义配置。但是这些配置有时会阻止服务的启动进程。当服务因某个问题而无法启动时,您会收到一条错误消息。
来自 Apache Spark History Server 的错误消息示例:
2022-11-26 03:34:13 +0000 Puppet (err): Systemd start for spark-history-server failed!journalctl log for spark-history-server: -- Logs begin at Sat 2022-11-26 03:27:57 UTC, end at Sat 2022-11-26 03:34:13 UTC. -- Nov 26 03:34:10 ip-192-168-1-32 systemd[1]: Starting Spark history-server... Nov 26 03:34:10 ip-192-168-1-32 spark-history-server[1076]: Starting Spark history-server (spark-history-server):[OK] Nov 26 03:34:10 ip-192-168-1-32 su[1112]: (to spark) root on none Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service: control process exited, code=exited status=1 Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Failed to start Spark history-server. Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Unit spark-history-server.service entered failed state. Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service failed. 2022-11-26 03:34:13 +0000 /Stage[main]/Spark::History_server/Service[spark-history-server]/ensure (err): change from 'stopped' to 'running' failed: Systemd start for spark-history-server failed! journalctl log for spark-history-server:
要解决此类错误,请执行以下操作:
- 检查启动失败的服务。
- 检查配置设置是否存在拼写错误。
- 检查指定位置的 Amazon S3 日志,查找失败的原因。例如,s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/applications/example-failed-application/example-failed-service.gz。
下载或安装应用程序时出现问题
当 Amazon EMR 无法安装或下载应用程序时,Amazon EMR 集群会出现故障,预置日志也无法完成。查看 stderr.gz 日志以确定导致错误的原因。
错误消息示例:
stderr.gzError Summary ------------- Disk Requirements: At least 2176MB more space needed on the / filesystem. 2022-11-26 03:18:44,662 ERROR Program: Encountered a problem while provisioning java.lang.RuntimeException: Amazon-linux-extras topics enabling or yum packages installation failed.
要解决此类错误,请在启动 Amazon EMR 集群时增加 Amazon Elastic Block Store (Amazon EBS) 根卷的大小。
Amazon S3 日志不可用
当 Amazon EMR 无法预置应用程序且 Amazon S3 中未生成任何日志时,您会收到一条错误消息。可能是网络错误导致 Amazon S3 日志记录失败。
要解决此类错误,请执行以下操作:
- 检查在启动 Amazon EMR 时是否启用了 Logging(日志记录)选项。有关更多信息,请参阅配置 Amazon EMR 集群日志记录和调试。
- 如果您使用自定义 AMI,请检查防火墙规则是否可能会干扰所需的 Amazon EMR 网络设置。有关详细信息,请参阅使用 Amazon EMR 托管式安全组。
- 如果您使用自定义 AMI,请检查主节点是否出现故障。打开 Amazon EMR 控制台,然后在导航窗格中选择 Hardware(硬件),以查看集群是否可以启动任何主节点。
- 如果您使用自定义 AMI,请确保遵循最佳实践。有关更多信息,请参阅使用自定义 AMI 为 Amazon EMR 集群配置提供更大的灵活性。
相关信息
- 语言
- 中文 (简体)

相关内容
AWS 官方已更新 7 个月前