Ich muss 400 g Dateien von einem Speicher-Volume mit elastischen Blöcken in einen S3-Eimer kopieren ... Das sind ungefähr 300 k Dateien mit ~ 1 MB
Ich habe s3cmd und s3fuse ausprobiert , beide sind sehr, sehr langsam. S3cmd lief einen ganzen Tag lang und sagte, dass der Kopiervorgang abgeschlossen ist. Als ich den Eimer überprüfte, war nichts passiert (ich nehme an, es ist etwas schiefgegangen, aber zumindest s3cmd hat sich nie über irgendetwas beschwert
S3Fuse arbeitet für einen weiteren ganzen Tag und hat weniger als 10% der Dateien kopiert ...
Gibt es dafür eine bessere Lösung?
Ich verwende natürlich Linux (Ubuntu 12.04)
Antworten:
Es gibt mehrere Schlüsselfaktoren, die den Durchsatz von EC2 bis S3 bestimmen:
Bei der Übertragung großer Datenmengen kann es wirtschaftlich sinnvoll sein, eine Cluster-Computing-Instanz zu verwenden, da der effektive Durchsatzgewinn (> 10x) mehr als die Kostendifferenz (2-3x) beträgt.
Während die obigen Ideen ziemlich logisch sind (obwohl die Obergrenze pro Thread möglicherweise nicht gilt), ist es ziemlich einfach, Benchmarks zu finden, die sie unterstützen. Eine besonders detaillierte kann hier gefunden werden .
Die Verwendung von 64 bis 128 parallelen (gleichzeitigen) Uploads von 1 MB großen Objekten sollte den 1-Gbit / s-Uplink einer m1.xlarge-Instanz und sogar den 10-Gbit / s-Uplink einer Cluster-Compute-Instanz (cc1.4xlarge) sättigen.
Die Instanzgröße lässt sich relativ einfach ändern, die beiden anderen Faktoren sind jedoch möglicherweise schwerer zu handhaben.
quelle
Also, nach vielen Tests hat s3-parallel-put den Trick gewaltig gemacht. Ganz klar die Lösung, wenn Sie viele Dateien in S3 hochladen müssen. Danke an cyberx86 für die Kommentare.
quelle
Optimieren Sie die AWS CLI S3-Konfigurationswerte gemäß http://docs.aws.amazon.com/cli/latest/topic/s3-config.html .
Das Folgende erhöhte eine S3-Synchronisationsgeschwindigkeit um mindestens das 8-fache!
Beispiel:
quelle
Ich habe dazu eine optimierte Konsolenanwendung in C # ( CopyFasterToS3 ) geschrieben. Ich habe in EBS vol verwendet, in meinem Fall hatte es 5 Ordner mit mehr als 2 Millionen Dateien in einer Größe von 20 GB. Das Skript wurde in weniger als 30 Minuten ausgeführt.
In diesem Artikel habe ich gezeigt, wie man eine rekursive Funktion parallel verwendet. Sie können es in eine andere Sprache übersetzen.
Viel Glück!
quelle
Es gibt auch: s3funnel , der sehr alt (2008) und einige offene Fehler zu sein scheint, aber immer noch von Amazon selbst aufgelistet wird: amzn-lnk
quelle
Versuchen Sie stattdessen s4cmd, es ist wirklich schneller als s3cmd. Seine Adresse: https://github.com/bloomreach/s4cmd
quelle
Versuchen Sie es mit s3-cli anstelle von s3cmd. Ich habe es anstelle von s3cmd verwendet, um Dateien in meinen s3-Bucket hochzuladen, und es hat meine Bereitstellung um fast 17 Minuten beschleunigt (von 21 auf 4 Minuten)!
Hier ist der Link: https://github.com/andrewrk/node-s3-cli
quelle