Problem beim Kopieren lokaler Daten in HDFS auf einem Hadoop-Cluster mit Amazon EC2 / S3

8

Ich habe einen Hadoop-Cluster mit 5 Knoten auf Amazon EC2 eingerichtet. Jetzt, wenn ich mich am Master-Knoten anmelde und den folgenden Befehl abschicke

%Vor%

Es wirft die folgenden Fehler (nicht zur gleichen Zeit). Der erste Fehler wird geworfen, wenn ich die Schrägstriche nicht durch '% 2F' ersetze und der zweite wird geworfen, wenn ich sie durch '% 2F' ersetzen:

%Vor%

Hinweis:

1) Als ich jps übermittelte, um zu sehen, welche Aufgaben auf dem Master ausgeführt wurden, wurde nur

angezeigt %Vor%

Verlassen von DataNode und TaskTracker.

2) Mein Geheimschlüssel enthält zwei '/' (Schrägstriche). Und ich ersetze sie mit '% 2F' in der S3 URI.

PS: Das Programm läuft auf EC2 einwandfrei, wenn es auf einem einzelnen Knoten ausgeführt wird. Nur wenn ich einen Cluster starte, stoße ich auf Probleme beim Kopieren von Daten von / nach S3 von / nach HDFS. Und was macht distp? Muss ich die Daten verteilen, nachdem ich die Daten von S3 nach HDFS kopiert habe? (Ich dachte, HDFS kümmerte sich intern darum)

WENN Sie mich zu einem Link führen könnten, der die Ausführung von Map / reduce-Programmen auf einem Hadoop-Cluster mit Amazon EC2 / S3 erläutert. Das wäre großartig.

Grüße,

Deepak.

    
Deepak 09.06.2010, 20:44
quelle

4 Antworten

4

Sie können auch Apache Whirr für diesen Workflow verwenden. Überprüfen Sie die Kurzanleitung und die 5 Minuten Anleitung für weitere Informationen.

Disclaimer: Ich bin einer der Committer.

    
Andrei Savu 10.06.2011, 09:46
quelle
21

Wahrscheinlich möchten Sie s3n: // urls verwenden, nicht s3: // urls. s3n: // bedeutet "Eine reguläre Datei, lesbar von der Außenwelt, in dieser S3-URL". s3: // verweist auf ein HDFS-Dateisystem, das einem S3-Bucket zugeordnet ist.

Um das Problem mit dem URL-Escaping für den Zugriffsschlüssel zu vermeiden (und das Leben viel einfacher zu machen), fügen Sie sie in die Datei /etc/hadoop/conf/core-site.xml ein:

%Vor%

Es gab an einem Punkt ein ausstehendes Problem mit geheimen Schlüsseln, die einen Schrägstrich hatten - die URL wurde in einigen Kontexten entschlüsselt, aber nicht in anderen. Ich weiß nicht, ob es behoben wurde, aber ich weiß, dass mit den Tasten in der .conf das weggeht.

Andere Quickies:

  • Sie können Ihr Problem am schnellsten mit den hadoop-Dateisystembefehlen beheben, die auf URLs von s3n: // (und s3: //) einwandfrei funktionieren. Versuchen Sie hadoop fs -cp s3n://myhappybucket/ oder hadoop fs -cp s3n://myhappybucket/happyfile.txt /tmp/dest1 und sogar hadoop fs -cp /tmp/some_hdfs_file s3n://myhappybucket/will_be_put_into_s3
  • Der Befehl distcp führt einen Nur-Mapper-Befehl aus, um einen Baum von dort nach hier zu kopieren. Verwenden Sie es, wenn Sie eine sehr große Anzahl von Dateien auf das HDFS kopieren möchten. (Für den täglichen Gebrauch funktioniert hadoop fs -cp src dest einfach).
  • Sie müssen die Daten nicht in das HDFS verschieben, wenn Sie nicht möchten. Sie können alle Quelldaten direkt aus s3 ziehen, alle weiteren Manipulationen auf HDFS oder S3 durchführen, wie Sie es für richtig halten.
  • Hadoop kann verwirrt werden, wenn es eine Datei s3n: // myhappybucket / foo / bar und ein "Verzeichnis" (viele Dateien mit Schlüsseln s3n: // myhappybucket / foo / bar / etwas) gibt. Einige alte Versionen des s3sync-Befehls würden in der S3-Struktur nur solche 38-Byte-Turbulenzen zurücklassen.
  • Wenn Sie SocketTimeoutException s sehen, wenden Sie den Patch für HADOOP-6254 an . Wir waren, und wir taten es und sie gingen weg.
mrflip 13.06.2010 18:30
quelle
3

Versuchen Sie es mit Amazon Elastic MapReduce. Es entfällt die Notwendigkeit, die Hadoop-Knoten zu konfigurieren, und Sie können auf Objekte in Ihrem s3-Account so zugreifen, wie Sie es erwarten.

    
Ben Hardy 15.06.2010 22:05
quelle
0

Verwenden Sie

%Vor%

z.B.

%Vor%

oder

%Vor%     
samthebest 08.05.2014 16:17
quelle