2013-01-31 2 views
5

EMR의 워크 플로를 사용하여 s3에서 hdfs로 파일을 복사하려고하는데 아래 명령을 실행하면 jobflow가 성공적으로 시작되지만 파일을 복사하려고 할 때 오류가 발생합니다. HDFS. 입력 파일 권한을 설정해야합니까?s3distcp를 사용하여 amazon s3에서 hdfs로 파일을 복사 할 수 없습니다.

명령 :

./elastic-mapreduce --jobflow J-35D6JOYEDCELA --jar S3 : //us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar - -args '--src, S3 : // odsh/입/- 이명 령, HDFS : /// 사용자

출력

작업 TASKID = "task_201301310606_0001_r_000000"TASK_TYPE = "줄이기"를 TASK_STATUS = "FAILED"FINISH_TIME = "1359612576612"ERROR = "java.lang.RuntimeException : 감속 기 작업이 1 개의 파일을 복사하지 못했습니다 : s3 : // odsh/input/GL _01112_20121019.dat 등 조직에서 org.apache.hadoop.mapred.ReduceTask.runOldReducer (ReduceTask.java:538) 에서 com.amazon.external.elasticmapreduce.s3distcp.CopyFilesReducer.close (CopyFilesReducer.java:70) 에서 . apache.hadoop.mapred.ReduceTask.run (ReduceTask.java:429) at org.apache.hadoop.mapred.Child $ 4.run (Child.java:255) at java.security.AccessController.doPrivileged (네이티브 메소드) at javax.security.auth.Subject.doAs (Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1132) at org.apache.hadoop.mapred.Child. main (Child.java:249)

답변

6

같은 예외가 발생합니다. CopyFilesReducer이 여러 CopyFilesRunable 인스턴스를 사용하여 S3에서 파일을 다운로드 할 때 경쟁 조건으로 인해 버그가 발생한 것 같습니다. 문제는 다중 스레드에서 동일한 temp 디렉토리를 사용하고 스레드가 완료되면 temp 디렉토리를 삭제한다는 것입니다. 따라서 하나의 스레드가 다른 스레드보다 먼저 완료되면 다른 스레드가 아직 사용중인 임시 디렉토리를 삭제합니다.

문제를 AWS에보고했지만, 작업 설정에서 변수 s3DistCp.copyfiles.mapper.numWorkers을 1로 설정하여 감속기가 강제로 단일 스레드를 사용하도록하여 버그를 해결할 수 있습니다.

+0

누구 아는 사람? –

1

이 문제는 경쟁 조건으로 인해 발생합니다. -Ds3DistCp.copyfiles.mapper.numWorkers=1을 전달하면 문제를 피할 수 있습니다.

아마존이이 버그를 수정하기를 바랍니다.

2

근로자 수를 조정하는 것이 효과적이지 않았습니다. s3distcp는 항상 작은/중간 인스턴스에서 실패했습니다. 작업 작업의 힙 크기를 늘리면 (-D mapred.child.java.opts=-Xmx1024m 통해) 해결되었습니다.

사용 예제 :이 아마존에 의해 고정되어있는 경우

hadoop jar /home/hadoop/lib/emr-s3distcp-1.0.jar 
    -D mapred.child.java.opts=-Xmx1024m 
    --src s3://source/ 
    --dest hdfs:///dest/ --targetSize 128 
    --groupBy '.*\.([0-9]+-[0-9]+-[0-9]+)-[0-9]+\..*' 
    --outputCodec gzip 
관련 문제