Ich versuche Distcp zu verwenden, um einen Ordner von meinem lokalen Hadoop-Cluster (Cdh4) in meinen Amazon S3-Bucket zu kopieren.DistCp von Local Hadoop nach Amazon S3
Ich verwende den folgenden Befehl ein:
hadoop distcp -log /tmp/distcplog-s3/ hdfs://nameserv1/tmp/data/sampledata s3n://hdfsbackup/
hdfsbackup der Name meiner Amazon S3 Bucket ist.
DistCp nicht mit unbekannter Host Ausnahme:
13/05/31 11:22:33 INFO tools.DistCp: srcPaths=[hdfs://nameserv1/tmp/data/sampledata]
13/05/31 11:22:33 INFO tools.DistCp: destPath=s3n://hdfsbackup/
No encryption was performed by peer.
No encryption was performed by peer.
13/05/31 11:22:35 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN token 54 for hadoopuser on ha-hdfs:nameserv1
13/05/31 11:22:35 INFO security.TokenCache: Got dt for hdfs://nameserv1; Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:nameserv1, Ident: (HDFS_DELEGATION_TOKEN token 54 for hadoopuser)
No encryption was performed by peer.
java.lang.IllegalArgumentException: java.net.UnknownHostException: hdfsbackup
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:414)
at org.apache.hadoop.security.SecurityUtil.buildDTServiceName(SecurityUtil.java:295)
at org.apache.hadoop.fs.FileSystem.getCanonicalServiceName(FileSystem.java:282)
at org.apache.hadoop.fs.FileSystem.collectDelegationTokens(FileSystem.java:503)
at org.apache.hadoop.fs.FileSystem.addDelegationTokens(FileSystem.java:487)
at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal(TokenCache.java:130)
at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal(TokenCache.java:111)
at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodes(TokenCache.java:85)
at org.apache.hadoop.tools.DistCp.setup(DistCp.java:1046)
at org.apache.hadoop.tools.DistCp.copy(DistCp.java:666)
at org.apache.hadoop.tools.DistCp.run(DistCp.java:881)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.tools.DistCp.main(DistCp.java:908)
Caused by: java.net.UnknownHostException: hdfsbackup
... 14 more
Ich habe die AWS ID/Geheim konfigurierte im Kern-site.xml alle Knoten.
Ich bin in der Lage, Dateien von hdfs mit dem Befehl cp ohne Probleme zu kopieren. Der unter Befehl kopiert erfolgreich den hdfs Ordner S3
hadoop fs -cp hdfs://nameserv1/tmp/data/sampledata s3n://hdfsbackup/
Ich weiß, es ist Amazon S3 optimiert distcp (s3distcp) zur Verfügung, aber ich will nicht, es zu benutzen, da es nicht aktualisieren/überschreiben Optionen kann leider.
Danke, ich vermutete, dass es sich um ein sicherheitsbezogenes Problem handelt, das auf einem anderen Problem basiert (https://issues.apache.org/jira/browse/HADOOP-8408), das eine ähnliche Exception-Stacktrace hatte. – Mohamed
Das Umbenennen des Buckets, um den Domänennamen der Zeile zu sehen, funktionierte nicht für mich. Der Patch behebt das Problem. – Mohamed