Probleme mit Hadoop unterscheiden sich von HDFS zu Amazon S3

8

Ich versuche, Daten von HDFS mit distcp nach S3 zu verschieben. Der distcp Job scheint erfolgreich zu sein, aber in S3 werden die Dateien nicht korrekt erstellt. Es gibt zwei Probleme:

  1. Die Dateinamen und Pfade werden nicht repliziert. Alle Dateien enden als block_<some number> im Stammverzeichnis des Buckets.
  2. Es erzeugt eine Menge zusätzlicher Dateien auf S3 mit einigen Metadaten und Protokollen.

Ich konnte keine Dokumentation / Beispiele dafür finden. Was vermisse ich? Wie kann ich debuggen?

Hier sind einige weitere Details:

%Vor%     
Paramesh 10.05.2012, 06:26
quelle

5 Antworten

13

Sie sollten s3n anstelle von s3 verwenden.

s3n ist die native Dateisystemimplementierung (dh - reguläre Dateien), wobei s3 die hdfs-Blockstruktur auf den Dateien anwendet, so dass Sie sie nicht wirklich lesen können, ohne hdfs-Bibliotheken durchzugehen.

Also:

%Vor%     
Matthew Rathbone 10.05.2012 23:19
quelle
3

Amazon hat eine Version von distcp erstellt, die für die Übertragung zwischen hdfs und s3 optimiert ist, die sie entsprechend s3distcp aufrufen. Vielleicht möchten Sie das auch überprüfen. Es ist für die Verwendung mit Amazon EMR vorgesehen, aber das Jar ist in s3 verfügbar, sodass Sie es möglicherweise außerhalb eines EMR-Auftragsflusses verwenden können.

Ссылка

    
dcsesq 25.05.2012 06:34
quelle
3

Falls Ihre Dateien in HDFS größer als 5 GB sind, werden in Ihrem distcp-Job Fehler angezeigt, die wie folgt aussehen:

%Vor%

Um dies zu beheben, verwenden Sie entweder das s3n Dateisystem als @ matthew-rathbone vorgeschlagen, aber mit -Dfs.s3n.multipart.uploads.enabled=true like:

%Vor%

ODER

Verwenden Sie das s3-Dateisystem der nächsten Generation, s3a like:

%Vor%

Optionen und Dokumentation für diese leben hier: Ссылка

    
Sean 22.02.2016 20:30
quelle
2

Aktualisieren Sie dies für Apache Hadoop 2.7+ und ignorieren Sie Amazon EMR, da sie die Dinge dort geändert haben.

  1. Wenn Sie Hadoop 2.7 oder höher verwenden, verwenden Sie s3a über s3n. Dies gilt auch für aktuelle Versionen von HDP und AFAIK, CDH.
  2. Dies unterstützt 5 + GB-Dateien, hat andere nette Funktionen usw. Es ist spürbar besser beim Lesen von Dateien - und wird nur mit der Zeit besser werden.
  3. Apache s3: // sollte als veraltet gelten - Sie benötigen es nicht mehr und sollten es nicht mehr verwenden.
  4. Amazon EMR verwendet "s3: //", um auf seine eigene, benutzerdefinierte Bindung an S3 zu verweisen. Das sollten Sie verwenden, wenn Sie mit EMR arbeiten.

Die Verbesserung der Zuverlässigkeit und Leistung im Bereich des Arbeitens mit Objektlagern ist immer noch eine fortlaufende Arbeit ... Beiträge sind wie immer willkommen.

    
Steve Loughran 02.09.2016 12:50
quelle
0

Probieren Sie diese Lösung aus. Zumindest hat es für mich funktioniert. (Ich habe dir mit 30 GB Datei bewegt).

    
denys 07.09.2012 11:37
quelle