Wie kann ich über eine lokale Hadoop 2.6-Installation auf S3 / S3n zugreifen?
Ich versuche zu reproduzieren eines Amazon EMR-Clusters auf meiner lokalen Maschine. Für diesen Zweck habe ich installiert die die aktuelle stabile version von Hadoop - 2.6.0.
Nun würde ich gerne den Zugriff auf ein S3-bucket, wie ich innerhalb der EMR-cluster.
Habe ich die aws-Anmeldeinformationen in core-site.xml:
<property>
<name>fs.s3.awsAccessKeyId</name>
<value>some id</value>
</property>
<property>
<name>fs.s3n.awsAccessKeyId</name>
<value>some id</value>
</property>
<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>some key</value>
</property>
<property>
<name>fs.s3n.awsSecretAccessKey</name>
<value>some key</value>
</property>
Hinweis: Da gibt es einige Hiebe auf den key, ich entkam Ihnen mit %2F
Wenn ich versuche, die Liste der Inhalt des Eimers:
hadoop fs -ls s3://some-url/bucket/
Bekomme ich diesen Fehler:
ls: Nein Dateisystem für das Schema: s3
Bearbeitete ich core-site.xml wieder, und Hinzugefügt Informationen in Bezug auf die fs:
<property>
<name>fs.s3.impl</name>
<value>org.apache.hadoop.fs.s3.S3FileSystem</value>
</property>
<property>
<name>fs.s3n.impl</name>
<value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
</property>
Dieses mal bekomme ich eine andere Fehlermeldung:
-ls: Fatal internal error
java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3.S3FileSystem not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2074)
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2578)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
Irgendwie vermute ich, dass das Garn die Verteilung nicht über die notwendigen Gläser werden in der Lage zu Lesen S3, aber ich habe keine Ahnung, wo diese zu erhalten. Alle Hinweise in diese Richtung würde sehr geschätzt werden.
InformationsquelleAutor der Frage doublebyte | 2015-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus irgendeinem Grund, das Glas
hadoop-aws-[version].jar
enthält die ImplementierungNativeS3FileSystem
ist nicht in derclasspath
von hadoop standardmäßig in der version 2.6 & 2.7. Also, versuchen Sie und fügen Sie dem Klassenpfad durch hinzufügen der folgenden Zeile inhadoop-env.sh
befindet sich in$HADOOP_HOME/etc/hadoop/hadoop-env.sh
:Durch die Art und Weise, Sie könnten überprüfen Sie den Klassenpfad von Hadoop mit:
InformationsquelleAutor der Antwort Ashrith
InformationsquelleAutor der Antwort ksindi
@Ashrith die Antwort war für mich mit einer Veränderung: ich musste
$HADOOP_PREFIX
eher als$HADOOP_HOME
beim ausführen v2.6 auf Ubuntu. Vielleicht ist dies, weil es klingt wie$HADOOP_HOME
wird veraltet?export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${HADOOP_PREFIX}/share/hadoop/tools/lib/*
Having said that, die weder arbeitete für mich auf meinem Mac mit v2.6 installiert ist, über Homebrew. In diesem Fall bin ich mit dieser extrem cludgy export:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$(brew --prefix hadoop)/libexec/share/hadoop/tools/lib/*
InformationsquelleAutor der Antwort Matt K
Um dieses Problem zu beheben ich habe versucht, alle die oben genannten, welche gescheitert ist (und für meine Umwelt sowieso).
Aber ich war in der Lage, um es arbeiten durch kopieren der beiden Gläser oben erwähnt von den tools, die dir und in common/lib.
Fein gearbeitet, dass nach.
InformationsquelleAutor der Antwort null
Wenn Sie mit HDP 2.x oder höher, können Sie versuchen, ändern Sie die folgende Eigenschaft in der MapReduce2 Konfigurationseinstellungen in Ambari.
mapreduce.- Anwendung.classpath
Fügen Sie den folgenden Wert an das Ende der vorhandenen Zeichenfolge:
/usr/hdp/${hdp.version}/hadoop-mapreduce/*
InformationsquelleAutor der Antwort David Kjerrumgaard