VPCAmazon EMR 클러스터 작업 중 오류 - 아마존 EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

VPCAmazon EMR 클러스터 작업 중 오류

다음 오류는 Amazon의 VPC 구성에서 흔히 발생합니다EMR.

잘못된 서브넷 구성

클러스터 세부 정보 페이지의 상태 필드에는 다음과 비슷한 오류가 표시됩니다.

The subnet configuration was invalid: Cannot find route to InternetGateway in main RouteTable rtb-id for vpc vpc-id.

이 문제를 해결하려면 Internet Gateway를 만들어 사용자 게이트웨이에 연결해야 VPC 합니다. 자세한 내용은 인터넷 게이트웨이 추가를 참조하십시오 VPC.

또는 확인 활성화 및 DNS호스트 이름 지원 활성화를 DNS 활성화하도록 구성했는지 확인하십시오VPC. 자세한 내용은 다음과 DNS함께 사용을 참조하십시오. VPC

누락된 DHCP 옵션 세트

클러스터 시스템 로그(syslog)에 다음과 유사한 오류와 함께 단계 실패가 표시됩니다.

ERROR org.apache.hadoop.security.UserGroupInformation (main): PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.IOException: org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id 'application_id' doesn't exist in RM.

또는

ERROR org.apache.hadoop.streaming.StreamJob (main): Error Launching job : org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id 'application_id' doesn't exist in RM.

이 문제를 해결하려면 매개변수가 다음 값으로 설정된 DHCP 옵션 세트를 VPC 포함하는 a를 구성해야 합니다.

참고

를 사용하는 경우 AWS GovCloud (미국 서부) 지역은 다음 예제에 사용된 값 us-gov-west-1.compute.internal 대신 도메인 이름을 로 설정합니다.

  • domain-name = ec2.internal

    리전이 미국 동부(버지니아 북부)인 경우 ec2.internal을 사용합니다. 다른 지역의 경우 다음을 사용하십시오.region-name.compute.internal. 예를 들어 us-west-2에서는 도메인 이름 =을 사용합니다. us-west-2.compute.internal

  • domain-name-servers = AmazonProvidedDNS

자세한 내용은 옵션 세트를 참조하십시오. DHCP

권한 오류

stderr 로그에 표시되는 단계 오류는 Amazon S3 리소스에 적절한 권한이 없음을 의미합니다. 이 오류는 403 오류로, 다음과 비슷합니다.

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID

를 로 설정하면 ActionOnFailure 클러스터가 상태TERMINATE_JOB_FLOW, SHUTDOWN_COMPLETED_WITH_ERRORS 와 함께 종료됩니다.

이 문제를 해결하는 몇 가지 방법은 다음과 같습니다.

  • a 내에서 Amazon S3 버킷 정책을 사용하는 경우VPC, VPC 엔드포인트를 생성하고 엔드포인트를 생성할 때 정책 옵션에서 Allow all (모두 허용) 을 선택하여 모든 버킷에 대한 액세스 권한을 부여해야 합니다.

  • S3 리소스와 관련된 모든 정책에 클러스터를 시작하는 정책이 포함되어 있는지 확인하십시오. VPC

  • 클러스터에서 다음 명령을 실행하여 버킷에 액세스할 수 있는 확인합니다.

    hadoop fs -copyToLocal s3://path-to-bucket /tmp/
  • 클러스터의 log4j.logger.org.apache.http.wire 파일에서 DEBUG 파라미터를 /home/hadoop/conf/log4j.properties로 설정하여 자세한 디버깅 정보를 가져올 수 있습니다. 클러스터에서 버킷에 대한 액세스를 시도한 후 stderr 로그 파일을 확인할 수 있습니다. 로그 파일은 자세한 정보를 제공합니다.

    Access denied for getting the prefix for bucket - us-west-2.elasticmapreduce with path samples/wordcount/input/ 15/03/25 23:46:20 DEBUG http.wire: >> "GET /?prefix=samples%2Fwordcount%2Finput%2F&delimiter=%2F&max-keys=1 HTTP/1.1[\r][\n]" 15/03/25 23:46:20 DEBUG http.wire: >> "Host: us-west-2.elasticmapreduce.s3.amazonaws.com[\r][\n]"

START_FAILED를 발생시키는 오류

AMI3.7.0 이전 버전에서는 호스트 이름이 지정된 경우 VPCs Amazon은 다음과 같이 서브넷의 내부 호스트 이름을 사용자 지정 도메인 주소와 EMR 매핑합니다. ip-X.X.X.X.customdomain.com.tld 예를 들어 호스트 이름이 ip-10.0.0.10 이고 도메인 이름 옵션이 customdomain.com으로 설정된 경우 Amazon에서 매핑한 결과 호스트 이름은 VPC 다음과 같습니다. EMR ip-10.0.1.0.customdomain.com 호스트 이름을 10.0.0.10으로 확인하는 항목이 /etc/hosts에 추가됩니다. 이 동작은 AMI 3.7.0에서 변경되었으며 이제 Amazon은 전체 DHCP 구성을 EMR 존중합니다. VPC 이전에는 고객이 부트스트랩 작업을 사용하여 호스트 이름 매핑을 지정할 수도 있었습니다.

이 동작을 보존하려면 사용자 지정 도메인에 필요한 순방향 해결 설정을 제공해야 합니다. DNS

클러스터 Terminated with errors 및 시작 NameNode 실패

사용자 지정 DNS 도메인 이름을 사용하는 EMR 클러스터를 시작할 때 콘솔에 다음 오류 메시지가 표시되면서 클러스터가 실패할 수 있습니다. VPC

Terminated with errors On the master instance(instance-id), bootstrap action 1 returned a non-zero return code

이 오류는 시작할 수 없었기 때문에 발생합니다. NameNode 그러면 Amazon S3의 URI 형식이 다음과 같은 NameNode 로그에 다음과 같은 오류가 나타납니다s3://mybucket/logs/cluster-id/daemons/master instance-id/hadoop-hadoop-namenode-master node hostname.log.gz.

2015-07-23 20:17:06,266 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem (main): Encountered exception loading fsimage java.io.IOException: NameNode is not formatted. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:212) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:537) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:596) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:765) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:749) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1441) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1507)

이는 두 가지를 모두 사용하는 a에서 EMR 클러스터를 시작할 때 EC2 인스턴스가 여러 세트의 정규화된 도메인 이름을 가질 수 있는 잠재적 문제 때문입니다. VPC AWS-제공 DNS 서버 및 사용자 지정 사용자 제공 DNS 서버. 사용자 제공 DNS 서버가 EMR 클러스터의 노드를 지정하는 데 사용되는 A 레코드에 대한 포인터 (PTR) 레코드를 제공하지 않는 경우 이러한 방식으로 구성하면 클러스터가 시작되지 않습니다. 해결 방법은 EC2 인스턴스가 의 서브넷 중 하나에서 시작될 때 생성되는 모든 A 레코드에 대해 PTR 레코드 1개를 추가하는 것입니다. VPC