EMR 클러스터를 프로비저닝하지 못함 - Amazon EMR

EMR 클러스터를 프로비저닝하지 못함

Amazon EMR 클러스터 시작에 실패하는 몇 가지 이유가 있습니다. 다음은 문제를 진단할 수 있는 몇 가지 방법입니다.

EMR 프로비저닝 로그 확인

Amazon EMR은 Puppet을 사용하여 클러스터에 애플리케이션을 설치하고 구성합니다. 로그를 보면 클러스터의 프로비저닝 단계에서 오류 발생 여부에 관한 세부 정보를 확인할 수 있습니다. 로그가 S3로 푸시되도록 구성된 경우 클러스터 또는 S3에서 로그에 액세스할 수 있습니다.

로그는 s3://<LOG LOCATION>/<CLUSTER ID>/node/<EC2 INSTANCE ID>/provision-node/apps-phase/0/{UUID}/puppet.log.gz. 및 디스크의 /var/log/provision-node/apps-phase/0/{UUID}/puppet.log에 저장됩니다.

일반 오류 메시지

오류 메시지 원인

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

EMR Record Server를 시작하지 못했습니다. 아래 EMR Record Server 로그를 참조하세요.

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

EMR Secret Agent를 시작하지 못했습니다. 아래에서 Secret Agent 로그를 확인합니다.

/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

Apache Ranger 플러그인 인증서용 Secret Manager의 프라이빗 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 로그 확인

Secret Agent 로그는 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

이 오류는 무시할 수 있습니다.

Record Server 로그 확인(SparkSQL용)

EMR Record Server 로그는 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 스크립트를 검사하여 프로비저닝 오류가 있는지 확인합니다.