2013-05-03 5 views
6

Wenn ich ein Verzeichnis mit ~ 5000 kleinen Dateien auf S3 habe, gibt es eine Möglichkeit, das gesamte Verzeichnis leicht zu zippen und die resultierende Zip-Datei auf S3 zu lassen? Ich muss dies tun, ohne manuell auf jede Datei zugreifen zu müssen.Zip ein ganzes Verzeichnis auf S3

Danke!

+0

http://www.w2lessons.com/2012/01/fast-zipping-in-amazon-s3.html –

+0

Ich sah das, aber es erfordert immer noch herunterladen Datei einzeln auf ec2, das ist derzeit unser Engpass – Jin

Antwort

4

Nein, es gibt kein Wundermittel.

(Nebenbei bemerkt muss man feststellen, dass es in S3 kein "Verzeichnis" gibt. Es gibt nur Objekte mit Pfaden. Sie können Verzeichnis-ähnliche Listen erhalten, aber das '/' Zeichen ist nicht ' t magic - Sie können Präfixe mit jedem Zeichen erhalten, das Sie wollen.)

Wie jemand darauf hingewiesen hat, kann "pre-zipping" ihnen helfen, sowohl Geschwindigkeit und Append-Geschwindigkeit herunterladen. (Auf Kosten von doppeltem Speicher.)

Wenn das Herunterladen der Engpass ist, klingt es so, als würden Sie seriell herunterladen. S3 kann 1000 gleichzeitige Verbindungen mit demselben Objekt unterstützen, ohne ins Schwitzen zu kommen. Sie müssen Benchmarks ausführen, um zu sehen, wie viele Verbindungen am besten sind, da zu viele Verbindungen aus einer Box von S3 gedrosselt werden. Und Sie müssen möglicherweise einige TCP tuning tun, wenn 1000 Verbindungen pro Sekunde.

Die "Lösung" hängt stark von Ihren Datenzugriffsmustern ab. Versuchen Sie, das Problem neu zu arrangieren. Wenn Ihre Einzeldatei-Downloads selten sind, ist es möglicherweise sinnvoller, sie zu 100 in S3 zu gruppieren und sie dann bei Bedarf zu trennen. Wenn es sich um kleine Dateien handelt, kann es sinnvoll sein, sie im Dateisystem zwischenzuspeichern.

Oder es könnte sinnvoll sein, alle 5000 Dateien als eine große Zip-Datei in S3 zu speichern und einen "Smart Client" zu verwenden, der bestimmte Bereiche der Zip-Datei herunterladen kann, um die einzelnen Dateien zu bedienen. (S3 unterstützt Byte-Bereiche, wie ich mich erinnere.)

+0

Ich sehe .. Das ist, was ich dachte. Unser Flaschenhals ist eigentlich EMR Zugriff S3 für diese Dateien immer und immer wieder .. Wir haben versucht mit 's3distcp', um alles zu kopieren, aber es ist immer noch unglaublich langsam. Ich werde die Plattform überdenken und vielleicht alle Dateien zusammen fassen und sie dann an S3 senden (wird wahrscheinlich auch die EMR-Leistung verbessern). Danke für die Einsicht! – Jin

+0

Das ist so eine gemeinsame Sache zu tun. Schade, dass niemand öffentlich über ihre Lösung gesprochen hat und jeder das Rad neu erfinden muss. –

Verwandte Themen