Probleme mit distcp und s3distcp mit meinem EMR-Auftrag, die Ausgänge zu HDFS

Habe ich einen job ausführen, die auf der AWS-EMR, gespeichert und der Ausgang in EMR-job ' s HDFS. Ich bin dann versucht zu kopieren das Ergebnis zu S3 über distcp oder s3distcp, aber beide sind nicht die, wie unten beschrieben. (Anmerkung: der Grund ich bin nicht nur senden meine EMR job output direkt auf S3 ist aufgrund der (derzeit ungelöste) problem, das ich beschreiben Wo ist mein AWS-EMR-Druckminderer-Ausgang für meine erledigten job (sollte auf S3, aber nix da)?

Für distcp, ich Laufe (nach dieser Beitrag Empfehlung):

elastic-mapreduce --jobflow <MY-JOB-ID> --jar \
s3://elasticmapreduce/samples/distcp/distcp.jar \
    --args -overwrite \
    --args hdfs:///output/myJobOutput,s3n://output/myJobOutput \
    --step-name "Distcp output to s3"

Im error-log (/mnt/var/log/hadoop/Schritte/8), erhalte ich:

With failures, global counters are inaccurate; consider running with -i
Copy failed: Status Code: 403, AWS Service: Amazon S3, AWS Request ID: <SOME-REQUEST-ID>, AWS Error Code: null, AWS Error Message: Forbidden, S3 Extended Request ID: <SOME-EXT-REQUEST-ID>
        at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:548)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:288)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170)
...

Für s3distcp, ich Laufe (nach die s3distcp Dokumentation):

elastic-mapreduce --jobflow <MY-JOB-ID> --jar \
s3://us-east-1.elasticmapreduce/libs/s3distcp/1.0.4/s3distcp.jar \
--args '--src,/output/myJobOutput,--dest,s3n://output/myJobOutput'

In der error-log (/mnt/var/log/hadoop/Schritte/9), erhalte ich:

java.lang.RuntimeException: Reducer task failed to copy 1 files: hdfs://10.116.203.7:9000/output/myJobOutput/part-00000 etc
        at com.amazon.elasticmapreduce.s3distcp.CopyFilesReducer.close(Unknown Source)
        at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:537)
        at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:428)
        at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
        at org.apache.hadoop.mapred.Child.main(Child.java:249)      

Irgendwelche Ideen was ich falsch mache?

Update: Jemand reagiert auf die AWS-Foren, um eine post über ein ähnliches distcp Fehler erwähnt den IAM-Benutzer, Benutzer, Berechtigungen, , aber ich weiß nicht was das bedeutet (edit: ich habe nicht angelegte IAM-Benutzer, so ist es unter Verwendung der Standardeinstellungen); hoffentlich hilft es pinpoint mein problem.

Update 2: ich bemerkte diesen Fehler in namenode log-Datei (wenn der wieder läuft s3distcp).. ich werde schauen Sie in Standard-EMR-Berechtigungen, um zu sehen, ob es mein problem:

2012-06-24 21:57:21,326 WARN org.apache.hadoop.security.ShellBasedUnixGroupsMapping (IPC Server handler 40 on 9000): got exception trying to get groups for user job_201206242009_0005
org.apache.hadoop.util.Shell$ExitCodeException: id: job_201206242009_0005: No such user

    at org.apache.hadoop.util.Shell.runCommand(Shell.java:255)
    at org.apache.hadoop.util.Shell.run(Shell.java:182)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:375)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:461)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:444)
    at org.apache.hadoop.security.ShellBasedUnixGroupsMapping.getUnixGroups(ShellBasedUnixGroupsMapping.java:68)
    at org.apache.hadoop.security.ShellBasedUnixGroupsMapping.getGroups(ShellBasedUnixGroupsMapping.java:45)
    at org.apache.hadoop.security.Groups.getGroups(Groups.java:79)
    at org.apache.hadoop.security.UserGroupInformation.getGroupNames(UserGroupInformation.java:966)
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.<init>(FSPermissionChecker.java:50)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5160)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkTraverse(FSNamesystem.java:5143)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:1992)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.getFileInfo(NameNode.java:837)
    ...

Update 3: ich Kontakt mit AWS-Unterstützung, und Sie haben nicht ein problem zu sehen, so bin jetzt darauf warten zu hören, wieder von Ihrer engineering-team. Post zurück, wie ich höre, mehr

InformationsquelleAutor Dolan Antenucci | 2012-06-24

Schreibe einen Kommentar