3

s3://__mybucket__/input/에 저장된 방대한 텍스트 파일의 단어 계산을 수행하는 간단한 EMR 작업을 설정하려고합니다. 두 가지 필수 스트리밍 단계 중 첫 번째를 올바르게 추가 할 수 없습니다. 첫 번째 입력은 wordSplitter.py으로, IdentityReducer은 임시 저장으로, 두 번째 단계는 /bin/wc/을 사용하여이 보조 저장 공간의 내용을 매핑하고 IdentityReducer으로 줄입니다. 다시).AWS EMR 클러스터 스트리밍 단계 : 잘못된 요청

Status:FAILED 
Reason:S3 Service Error. 
Log File:s3://aws-logs-209733341386-us-east-1/elasticmapreduce/j-2XC5AT2ZP48FJ/steps/s-1SML7U7CXRDT5/stderr.gz 
Details:Exception in thread "main" com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: 7799087FCAE73457), S3 Extended Request ID: nQYTtW93TXvi1G8U4LLj73V1xyruzre+uSt4KN1zwuIQpwDwa+J8IujOeQMpV5vRHmbuKZLasgs= 
JAR location: command-runner.jar 
Main class: None 
Arguments: hadoop-streaming -files s3://elasticmapreduce/samples/wordcount/wordSplitter.py -mapper wordSplitter.py -reducer org.apache.hadoop.mapred.lib.IdentityReducer -input s3://__mybucket__/input/ -output s3://__mybucket__/output/ 
Action on failure: Continue 

이것은 하둡 클러스터에 전송되는 명령은 다음과 같습니다 :

는 첫 번째 단계의 (실패)에 대한 설명입니다

JAR location : command-runner.jar 
Main class : None 
Arguments : hadoop-streaming -mapper s3a://elasticmapreduce/samples/wordcount/wordSplitter.py -reducer aggregate -input s3a://__my_bucket__/input/ -output s3a://__my_bucket__/output/ 

답변

1

여기 해결책은 가능성이 매우 쉽게 생각 .

대신 s3:// 버킷에 액세스하는 작업의 스키마로 s3a://을 사용하십시오. here을 참조하십시오. s3:// 스키마가 사용되지 않으며 해당 버켓이 Hadoop 데이터 전용이어야합니다. 위의 문서 링크에서 인용구 :

이 파일 시스템은 파일 시스템에 대한 버킷을 할애하도록 요구 - 당신이 파일이 포함 된 기존 버킷을 사용하거나 같은 버킷에 다른 파일을 작성하지 않아야합니다. 이 파일 시스템에 저장된 파일은 5GB보다 클 수 있지만 다른 S3 도구와 상호 운용 할 수는 없습니다.

+0

동일한 오류가 발생했습니다. 잘못된 요청 (서비스 : Amazon S3, 상태 코드 : 400, 오류 코드 : 400 잘못된 요청, 요청 ID : 4C4C5B2DBA095F5C' – Skyler

+0

@Skyler hmm 당신이 distcp를 통해 HDFS에 파일을 복사 할 수 있습니까? –

+0

그게 뭔지 전혀 모르겠습니다 .Hadoop과 직접 인터페이스하지 않습니다. AWS 콘솔을 사용하고 있습니다. – Skyler

관련 문제