EMR 集群预置失败 - Amazon EMR

EMR 集群预置失败

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

检查 EMR 调配日志

Amazon EMR 使用 Puppet 在集群上安装和配置应用程序。查看日志将提供有关在集群的配置阶段是否存在任何错误的详细信息。如果日志被配置为推送到 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 脚本以确定是否存在任何配置错误。