Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
S3DistCp (s3-dist-cp)
Apache DistCp ist ein Open-Source-Tool, mit dem Sie große Datenmengen kopieren können. S3DistCpist ähnlich DistCp, aber für die Arbeit mit AWS Amazon S3 optimiert. Der Befehl für S3DistCp in Amazon EMR Version 4.0 und höher lautets3-dist-cp, den Sie als Schritt in einem Cluster oder an der Befehlszeile hinzufügen. Mit dieser S3DistCp Funktion können Sie große Datenmengen effizient von Amazon S3 nach HDFS kopieren, wo sie in nachfolgenden Schritten in Ihrem Amazon EMR-Cluster verarbeitet werden können. Sie können es auch verwenden S3DistCp , um Daten zwischen Amazon S3-Buckets oder von HDFS nach Amazon S3 zu kopieren. S3DistCp ist skalierbarer und effizienter für das parallele Kopieren einer großen Anzahl von Objekten über Buckets und Konten hinweg. AWS
Spezifische Befehle, die die Flexibilität von S3DistCp in realen Szenarien demonstrieren, finden Sie im Big Data-Blog unter Sieben Tipps S3DistCp
Wird wie S3DistCp verwendet DistCp, um auf MapReduce verteilte Weise zu kopieren. Kopier-, Fehlerbehandlungs-, Wiederherstellungs- und Berichterstellungsaufgaben werden auf mehrere Server verteilt. Weitere Informationen zum Apache DistCp Open-Source-Projekt finden Sie in der DistCp Anleitung
Wenn S3DistCp einige oder alle der angegebenen Dateien nicht kopiert werden können, schlägt der Cluster-Schritt fehl und gibt einen Fehlercode ungleich Null zurück. In diesem Fall werden teilweise kopierte Dateien S3DistCp nicht bereinigt.
Wichtig
S3DistCp unterstützt keine Amazon S3-Bucket-Namen, die den Unterstrich enthalten.
S3DistCp unterstützt keine Verkettung für Parquet-Dateien. Verwenden Sie stattdessen. PySpark Weitere Informationen finden Sie unter Parquet-Dateien verketten in Amazon EMR
Um Kopierfehler zu vermeiden, wenn Sie S3DistCP verwenden, um eine einzelne Datei (anstelle eines Verzeichnisses) von S3 nach HDFS zu kopieren, verwenden Sie Amazon-EMR-Version 5.33.0 oder höher oder Amazon-EMR-Version 6.3.0 oder höher.
S3DistCp Optionen
Obwohl es ähnlich ist DistCp, S3DistCp unterstützt es einen anderen Satz von Optionen, um zu ändern, wie Daten kopiert und komprimiert werden.
Wenn Sie anrufen S3DistCp, können Sie die in der folgenden Tabelle beschriebenen Optionen angeben. Die Optionen werden dem Schritt mithilfe der Liste der Argumente hinzugefügt. Beispiele für die S3DistCp Argumente sind in der folgenden Tabelle aufgeführt.
| Option | Description | Erforderlich |
|---|---|---|
--src=LOCATION
|
Der Speicherort der zu kopierenden Daten. Hierbei kann es sich entweder um einen HDFS- oder Amazon-S3-Speicherort handeln. Beispiel: WichtigS3DistCp unterstützt keine Amazon S3-Bucket-Namen, die den Unterstrich enthalten. |
Ja |
--dest=LOCATION
|
Das Ziel für die Daten. Hierbei kann es sich entweder um einen HDFS- oder Amazon-S3-Speicherort handeln. Beispiel: WichtigS3DistCp unterstützt keine Amazon S3-Bucket-Namen, die den Unterstrich enthalten. |
Ja |
--srcPattern=PATTERN
|
Ein regulärer Ausdruck Wenn das Argument des regulären Ausdrucks Sonderzeichen wie Sternchen (*) enthält, muss entweder der reguläre Ausdruck oder die gesamte Beispiel: |
Nein |
--groupBy=PATTERN
|
Ein regulärer Ausdruck Klammern geben an, wie Dateien gruppiert werden soll, wobei alle Elemente, die der eingeklammerten Anweisung entsprechen, zu einer einzigen Ausgabedatei kombiniert werden. Wenn der reguläre Ausdruck keine Anweisung in Klammern enthält, schlägt der Cluster bei diesem Schritt fehl und gibt einen Fehler zurück. S3DistCp Wenn das Argument des regulären Ausdrucks Sonderzeichen wie Sternchen (*) enthält, muss entweder der reguläre Ausdruck oder die gesamte Wenn Beispiel: |
Nein |
--targetSize=SIZE
|
Die Größe (in Mebibyte (MiB)) der Dateien, die basierend auf der Wenn die durch Beispiel: |
Nein |
--appendToLastFile |
Gibt das Verhalten S3DistCp beim Kopieren von Dateien von Amazon S3 nach HDFS an, die bereits vorhanden sind. Es werden neue Dateidaten an vorhandene Dateien angefügt. Wenn Sie |
Nein |
--outputCodec=CODEC
|
Gibt den Komprimierungs-Codec für die kopierten Dateien an. Mögliche Werte sind: Beispiel: |
Nein |
--s3ServerSideEncryption
|
Stellt sicher, dass die Zieldaten mithilfe von SSL übertragen und in Amazon S3 automatisch mithilfe eines AWS serviceseitigen Schlüssels verschlüsselt werden. Beim Abrufen von Daten mit werden S3DistCp die Objekte automatisch unverschlüsselt. Wenn Sie versuchen, ein entschlüsseltes Objekt in einen Amazon-S3-Bucket zu kopieren, für den eine Verschlüsselung erforderlich ist, schlägt die Operation fehl. Weitere Informationen finden Sie unter Verwenden der Datenverschlüsselung. Beispiel: |
Nein |
--deleteOnSuccess
|
Wenn der Kopiervorgang erfolgreich ist, werden mit dieser Option S3DistCp die kopierten Dateien vom Quellspeicherort gelöscht. Dies ist nützlich, wenn Sie Ausgabedateien, wie Protokolldateien, von einem Speicherort an einen anderen als geplante Aufgabe kopieren und dieselben Dateien nicht zweimal kopiert werden sollen. Beispiel: |
Nein |
--disableMultipartUpload
|
Deaktiviert die Verwendung des mehrteiligen Uploads. Beispiel: |
Nein |
--multipartUploadChunkSize=SIZE
|
Die Größe jedes Teils in einem mehrteiligen Amazon S3-Upload in MiB. S3DistCp verwendet den mehrteiligen Upload, wenn Daten kopiert werden, die größer als der sind. Beispiel: |
Nein |
--numberFiles
|
Stellt Ausgabedateien sequenzielle Nummern voran. Die Zählung beginnt bei 0, es sei denn, von Beispiel: |
Nein |
--startingIndex=INDEX
|
Wird mit Beispiel: |
Nein |
--outputManifest=FILENAME
|
Erzeugt eine mit Gzip komprimierte Textdatei, die eine Liste aller kopierten Dateien enthält. S3DistCp Beispiel: |
Nein |
--previousManifest=PATH
|
Liest eine Manifestdatei, die während eines früheren Aufrufs zur S3DistCp Verwendung des Beispiel: |
Nein |
--requirePreviousManifest |
Erfordert ein vorheriges Manifest, das während eines vorherigen Aufrufs von erstellt wurde. S3DistCp Wenn dieser Wert auf "false" festgelegt ist, wird kein Fehler generiert, wenn kein vorheriges Manifest angegeben ist. Der Standardwert ist true. |
Nein |
--copyFromManifest
|
Kehrt das Verhalten Beispiel: |
Nein |
--s3Endpoint=ENDPOINT |
Gibt den Amazon-S3-Endpunkt an, der beim Hochladen einer Datei verwendet werden soll. Mit dieser Option wird der Endpunkt sowohl für die Quelle als auch das Ziel festgelegt. Falls die Option nicht festgelegt ist, wird als Standardendpunkt Beispiel: |
Nein |
--storageClass=CLASS |
Die zu verwendende Speicherklasse, wenn das Ziel Amazon S3 ist. Gültige Werte sind STANDARD und REDUCED_REDUNDANCY. Wenn diese Option nicht angegeben ist, wird S3DistCp versucht, die Speicherklasse beizubehalten. Beispiel: |
Nein |
--srcPrefixesFile=PATH |
Eine Textdatei in Amazon S3 (s3://), HDFS (hdfs:///) oder dem lokalen Dateisystem (file:/) mit einer Liste von Falls Beispiel: |
Nein |
S3DistCp Implementiert zusätzlich zu den oben genannten Optionen die Tool-Schnittstelle,
Hinzufügen S3DistCp als Schritt in einem Cluster
Sie können ihn aufrufen, S3DistCp indem Sie ihn als Schritt zu Ihrem Cluster hinzufügen. Sie können Schritte beim Start eines Clusters oder einem aktuell ausgeführten Cluster mithilfe der Konsole, Befehlszeilenschnittstelle oder API hinzufügen. Die folgenden Beispiele veranschaulichen das Hinzufügen eines S3DistCp Steps zu einem laufenden Cluster. Weitere Informationen zum Hinzufügen von Schritten zu einem Cluster finden Sie unter Aufträge an einen Cluster übermitteln im Verwaltungshandbuch für Amazon EMR.
Um einen S3DistCp Schritt zu einem laufenden Cluster hinzuzufügen, verwenden Sie den AWS CLI
Weitere Informationen zur Verwendung von Amazon EMR-Befehlen finden Sie in der AWS CLIAWS CLI Befehlsreferenz.
-
Um einen Schritt zu einem Cluster hinzuzufügen, der aufruft S3DistCp, übergeben Sie die Parameter, die angeben, wie der Kopiervorgang ausgeführt S3DistCp werden soll, als Argumente.
Im folgenden Beispiel werden Daemon-Protokolle von Amazon S3 in
hdfs:///outputkopiert. Im folgenden Befehl:-
--cluster-idgibt den Cluster an. -
Jarist der Speicherort der S3DistCp JAR-Datei. Ein Beispiel für die Ausführung eines Befehls auf einem Cluster mithilfe von command-runner.jar finden Sie unter Senden eines benutzerdefinierten JAR-Schritts zur Ausführung eines Skripts oder Befehls. -
Argsist eine durch Kommas getrennte Liste der Optionsname-Wert-Paare, an die übergeben werden soll. S3DistCp Eine vollständige Liste der verfügbaren Optionen finden Sie unter S3DistCp Optionen.
Um einen S3DistCp Kopierschritt zu einem laufenden Cluster hinzuzufügen, fügen Sie Folgendes in eine JSON-Datei ein, die wie
in diesem Beispiel in Amazon S3 oder Ihrem lokalen Dateisystem gespeichert ist.myStep.jsonj-3GYXXXXXX9IOKErsetzen Sie es durch Ihre Cluster-ID undamzn-s3-demo-bucketersetzen Sie es durch Ihren Amazon S3-Bucket-Namen.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","--s3Endpoint=s3.amazonaws.com","--src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","--dest=hdfs:///output","--srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]aws emr add-steps --cluster-idj-3GYXXXXXX9IOK--steps file://./myStep.json -
Beispiel Protokolldateien von Amazon S3 zu HDFS kopieren
Dieses Beispiel veranschaulicht, wie Protokolldateien in einem Amazon-S3-Bucket in HDFS kopiert werden, indem Sie einen Schritt zu einem aktuell ausgeführten Cluster hinzufügen. In diesem Beispiel werden die Daten, die in die Daemon-Protokolle kopiert werden, anhand der Option --srcPattern eingeschränkt.
Zum Kopieren von Protokolldateien von Amazon S3 in HDFS mithilfe der Option --srcPattern geben Sie Folgendes in einer JSON-Datei, die in Amazon S3 oder Ihrem lokalen Dateisystem gespeichert ist, als in diesem Beispiel ein. myStep.jsonj-3GYXXXXXX9IOKErsetzen Sie durch Ihre Cluster-ID und amzn-s3-demo-bucket durch Ihren Amazon S3-Bucket-Namen.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","--s3Endpoint=s3.amazonaws.com","--src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","--dest=hdfs:///output","--srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]