2009-04-14 4 views
21

Ich habe eine ziemlich große Datenmenge (~ 30G, aufgeteilt in ~ 100 Dateien), die ich zwischen S3 und EC2 übertragen möchte: Wenn ich die EC2-Instanzen starte, möchte ich die Daten von S3 nach EC2 kopieren lokale Festplatten so schnell wie ich kann, und wenn ich fertig bin Verarbeitung möchte ich die Ergebnisse zurück zu S3 kopieren.Schnellste/beste Weise Daten zwischen S3 zu EC2 kopieren?

Ich bin auf der Suche nach einem Werkzeug, das eine schnelle/parallele Kopie der Daten hin und her tun wird. Ich habe mehrere Skripte gehackt, einschließlich eines, das einen anständigen Job macht, also suche ich keine Hinweise auf grundlegende Bibliotheken; Ich suche etwas schnell und zuverlässig.

Antwort

1

Ich denke, Sie könnten besser einen Elastic Block Store verwenden, um Ihre Dateien anstelle von S3 zu speichern. Ein EBS ähnelt einem "Laufwerk" in S3, das in Ihre EC2-Instanz eingebunden werden kann, ohne jedes Mal die Daten kopieren zu müssen. Dadurch können Sie Ihre Daten zwischen EC2-Instanzen persistent halten, ohne jedes Mal auf S3 schreiben oder von diesem lesen zu müssen.

http://aws.amazon.com/ebs/

+3

Dies ist ein guter Vorschlag. Der einzige Nachteil von EBS-Volumes besteht darin, dass sie nur auf einer Instanz bereitgestellt werden können, die in derselben Verfügbarkeitszone wie das Volume ausgeführt wird. Z.B. Ein Volume in us-east-1a kann nicht von einer Instanz in us-east-1b verwendet werden. Wenn also eine Instanz in dieser Zone nicht ausgeführt werden kann oder möchte (aufgrund von Problemen oder einfach nur Kapazitätsengpässen), kann das Volume nicht verwendet werden. –

+2

So funktioniert EBS nicht. EBS ist kein Laufwerk auf S3. EBS liest/schreibt Daten nicht in S3, außer beim Erstellen eines Snapshot oder beim Erstellen eines EBS-Volumes aus einem Snapshot. –

+0

Ich wollte es nicht sagen * war * ein Laufwerk auf S3, ich meinte es war * wie * ein Laufwerk - wenn Sie S3-ähnlichen Speicher in der Art verwenden möchten, wie Sie ein Laufwerk verwenden würden, ist EBS eine gute Lösung . –

33

Leider wird Adam Vorschlag nicht wie sein Verständnis des EBS falsch ist (obwohl ich wünschte, er war richtig und oft dachte ich es soll auch so funktionieren) ... als EBS nichts zu tun hat mit S3, aber es wird Ihnen nur ein "externes Laufwerk" für EC2-Instanzen geben, die separat sind, aber mit den Instanzen verbunden werden können. Sie müssen immer noch zwischen S3 und EC2 kopieren, auch wenn keine Datenübertragungskosten zwischen den beiden bestehen.

Sie haben kein Betriebssystem Ihrer Instanz erwähnt, daher kann ich keine maßgeschneiderten Informationen geben. Ein beliebtes Kommandozeilen-Tool, das ich verwende, ist http://s3tools.org/s3cmd ... es basiert auf Python und daher sollte es nach Informationen auf seiner Website sowohl auf Win als auch auf Linux funktionieren, obwohl ich es die ganze Zeit unter Linux benutze. Sie könnten einfach ein schnelles Skript erstellen, das den integrierten Befehl "sync" verwendet, der ähnlich wie rsync funktioniert und jedes Mal ausgelöst wird, wenn Sie mit der Verarbeitung Ihrer Daten fertig sind. Sie können auch die rekursiven Put- und Get-Befehle verwenden, um Daten nur bei Bedarf abzurufen und abzulegen.

Es gibt grafische Tools wie Cloudberry Pro, die einige Befehlszeilenoptionen auch für Windows enthalten, sodass Sie Zeitplanbefehle einrichten können. http://s3tools.org/s3cmd ist wahrscheinlich der einfachste.

+0

Gute Antwort, aber vielleicht ist es wert zu beachten, dass s3cmd die Option --delete nicht mit Sync unterstützt, was bedeutet, dass wenn Sie etwas auf der Quelle löschen, es immer noch auf dem Ziel bleibt :( – golja

+0

Ich muss schauen Mit unseren Backup-Skripten hätte ich schwören können, dass es einen Weg gab - delete arbeitete mit sync. Obwohl ich mich erinnere, dass es etwas dauert, um genau richtig zu sein. Das Skript hat mir aber bei vielen Bereichen viel Zeit erspart! – Tyler

+0

Bit späte Antwort - meine Antwort war nicht mit EBS, um zwischen S3 und EC2 zu kopieren, sondern * statt * von S3. Ich werde aktualisieren, um zu klären. –

1

Installieren s3cmd Paket als

yum install s3cmd 

oder

sudo apt-get install s3cmd 

je nach Betriebssystem

dann das Kopieren von Daten mit diesem

s3cmd get s3://tecadmin/file.txt 

auch ls kann die Dateien auflisten.

für mehr detils sehen this

0

Inzwischen gibt ein Sync-Befehl ist in der AWS-Befehlszeilen-Tools, die den Trick tun sollten: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Beim Start: aws s3 sync s3: // mybucket/mylocalfolder

vor dem Herunterfahren: aws s3 sync/mylocalfolder s3: // mybucket

natürlich sind die Details immer Spaß wo rk out z. Wie kann parallel es ist (und können Sie es paralleler machen und ist das schneller goven die virtuelle Natur der gesamten Einrichtung)

Btw hoffe, du arbeitest noch an diesem ... oder jemand ist. ;)

0

Für mich ist die beste Form ist:

wget http://s3.amazonaws.com/my_bucket/my_folder/my_file.ext 

von PuTTy

Verwandte Themen