2017-03-29 3 views
1

Ich erhalte sehr große (5 TB) .csv-Dateien von meinen Clients auf S3-Buckets. Ich muss diese Dateien verarbeiten, Spalten hinzufügen und sie speichern.Wie können Sie S3 und EBS gemeinsam für eine kostengünstige Analyse von AWS verwenden?

Ich muss möglicherweise mit den Dateien auf die gleiche Weise arbeiten, wie ich die Anzahl der Features für zukünftige verbesserte Modelle erhöhen.

Klar, weil S3 Daten als Objekte speichert, jedes Mal wenn ich eine Änderung mache, muss ich 5 TB Daten lesen und schreiben.

Was ist der beste Ansatz ist, kann ich nehmen diese Daten zu verarbeiten, kostengünstig und zeitnah:

  1. Shop eine 5 TB-Datei auf S3 als Objekt, lesen Sie jedes Mal das Objekt, tun die Verarbeitung und das Ergebnis speichern zurück zu S3
  2. Speichern Sie die 5TB auf S3 als Objekt, lesen Sie das Objekt, zerkleinern Sie es zu kleineren Objekten und speichern Sie es als mehrere Objekte zurück in S3, so dass Sie zukünftig nur mit den Stücken arbeiten, die mich interessieren
  3. Speichern Sie alles auf EBS von Anfang an, montieren Sie es auf dem EC2 und führen Sie die Verarbeitung

Danke

+0

Wie ist die Architektur Ihres Analyseprozesses? Wenn es etwas ist, das Sie auf EC2 ausführen, ist das anders als beim Herunterladen von S3 auf On-Premise. Außerdem hilft es zu wissen, welche Sprache (Python?) Die Komplexität im Zusammenhang mit dem Einrichten einer direkten Schnittstelle zu S3 kennt. –

Antwort

1

Zuerst wird eine Warnung - die maximale Größe eines Objekts in Amazon S3 ist 5TB. Wenn Sie Informationen hinzufügen, die zu einem größeren Objekt führen, werden Sie wahrscheinlich dieses Limit erreichen.

Der intelligentere Weg, um diese Datenmenge zu verarbeiten ist es in parallel und vorzugsweise in mehr kleineren Dateien als eine Datei einzelnen 5TB eher zu tun.

Amazon EMR (effektiv eine verwaltete Hadoop-Umgebung) eignet sich hervorragend für verteilte Vorgänge in großen Datensätzen. Es kann Daten aus vielen Dateien parallel verarbeiten und Daten während des Betriebs komprimieren/dekomprimieren. Es ist komplex zu lernen, aber sehr effizient und fähig.

Wenn Sie mit Ihrem aktuellen Verfahren zur Verarbeitung der Daten kleben, würde ich empfehlen:

  • Wenn Ihre Anwendung direkt von S3 lesen kann, verwenden, die als Quelle. Andernfalls kopieren Sie die Datei (en) in EBS.
  • Prozess die Daten
  • Speichern Sie die Ausgabe lokal in EBS, vorzugsweise in kleineren Dateien (GBS statt TBs)
  • Kopieren Sie die Dateien auf S3 (oder auf EBS halten, wenn die Ihre Bedürfnisse erfüllt)