EMR 预置失败 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

EMR 预置失败

EMR 集群启动失败的原因有多种。以下是诊断问题的几种方式。

检查 EMR 预置日志

Amazon EMR 使用 Puppet 在 EMR 集群上安装和配置应用程序。查看日志将提供有关在 EMR 集群的配置阶段是否存在任何错误的详细信息。如果日志被配置为推送到 S3,则可以在集群或 S3 上访问日志。

日志存储在磁盘上的 /var/log/provision-node/apps-phase/0/{UUID}/puppet.logs3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/provision-node/apps-phase/0/{UUID}/puppet.log.gz.

常见错误消息

错误消息 原因

Puppet (err): Systemd start for emr-record-server failed! journalctl log for emr-record-server:

EMR 记录服务器启动失败。请参阅下面的 EMR 记录服务器日志。

Puppet (err): Systemd start for emr-record-server failed! journalctl log for emrsecretagent:

EMR SecretAgent 启动失败。请参阅下面的检查 SecretAgent 日志。

/Stage[main]/Ranger_plugins::Ranger_hive_plugin/Ranger_plugins::Prepare_two_way_tls[configure 2-way TLS in Hive plugin]/Exec[create keystore and truststore for Ranger Hive plugin]/returns (notice): 140408606197664:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY

Secrets Manager 中用于 Apache Ranger 插件证书的私有 TLS 证书格式不正确或不是私有证书。请参阅 TLS 证书 了解证书格式。

/Stage[main]/Ranger_plugins::Ranger_s3_plugin/Ranger_plugins::Prepare_two_way_tls[configure 2-way TLS in Ranger s3 plugin]/Exec[create keystore and truststore for Ranger amazon-emr-s3 plugin]/returns (notice): An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::XXXXXXXXXXX:assumed-role/EMR_EC2_DefaultRole/i-XXXXXXXXXXXX is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:XXXXXXXXXX:secret:AdminServer-XXXXX

EC2 实例配置文件角色没有从 Secrets Agent 检索 TLS 证书的权限。

检查 SecretAgent 日志

SecretAgent 日志位于 EMR 节点上的 /emr/secretagent/log/ 中,或位于 S3 中的 s3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/daemons/secretagent/ 目录中。

常见错误消息

错误消息 原因

Exception in thread "main" com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException: User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/EMR_EC2_DefaultRole/i-XXXXXXXXXXXXXXX is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::XXXXXXXXXXXX:role/*RangerPluginDataAccessRole* (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX; Proxy: null)

上述异常意味着 EMR EC2 实例配置文件角色无权代入角色 RangerPluginDataAccessRole。请参阅 用于与 Apache Ranger 本地集成的 IAM 角色

ERROR qtp54617902-149: Web App Exception Occurred

javax.ws.rs.NotAllowedException: HTTP 405 Method Not Allowed

这些错误可以忽略。

检查记录服务器日志(适用于 SparkSQL)

EMR 记录服务器日志可在 EMR 节点上的如下位置找到:/var/log/emr-record-server/,或者可以在 S3 中的以下目录中找到:s3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/daemons/emr-record-server/。

常见错误消息

错误消息 原因

InstanceMetadataServiceResourceFetcher:105 - [] Fail to retrieve token com.amazonaws.SdkClientException: Failed to connect to service endpoint

EMR SecretAgent 未能启动或出现问题。检查 SecretAgent 日志中的错误和 puppet 脚本以确定是否存在任何配置错误。