跳至内容

为什么我的 Amazon EMR 集群终止并显示 "application provisioning failed" 错误?

3 分钟阅读
0

我的 Amazon EMR 集群终止并显示 "application provisioning failed" 错误。

解决方法

当 Amazon EMR 在启动 Amazon EMR 集群时无法安装、配置或启动指定软件时,您可能会收到 "application provisioning failed" 错误。

查看 Amazon EMR 预置日志

Amazon EMR 将预置日志存储在启动集群时指定的 Amazon Simple Storage Service (Amazon S3) 存储桶中。

完成以下步骤:

  1. 打开 Amazon EMR 控制台
  2. 在导航窗格中,选择 Clusters(集群)。然后,选择出现故障的 Amazon EMR 集群以查看集群详细信息。
  3. Summary(摘要)部分中,选择 Terminated with errors(因错误而终止),并记下错误消息中包含的主节点 ID。
  4. Cluster logs(集群日志)部分中,选择 Amazon S3 location(Amazon S3 位置)URL。
  5. 按照以下路径导航到您的 UUID 文件夹:
    node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/
    **注意:**请将 example-primary-node-ID 替换为您的主节点 ID。将 example-UUID 替换为您的 UUID。
  6. 在结果列表中,选择 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 日志记录失败。

要解决此类错误,请执行以下操作:

相关信息

EMR 集群预置失败

AWS 官方已更新 6 个月前