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.
DistCp S3 (s3-dist-cp)
Apache DistCp ist ein Open-Source-Tool, mit dem Sie große Datenmengen kopieren können. S3 DistCp ähnelt Amazon S3 DistCp, ist aber für die Verwendung mit AWS Amazon S3 optimiert. Der Befehl für S3 DistCp in Amazon EMR Version 4.0 und höher lautets3-dist-cp
, den Sie als Schritt in einem Cluster oder in der Befehlszeile hinzufügen. Mit S3 DistCp 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 S3 auch verwendenDistCp , um Daten zwischen Amazon S3-Buckets oder von HDFS nach Amazon S3 zu kopieren. S3 DistCp ist skalierbarer und effizienter für das parallel Kopieren einer großen Anzahl von Objekten zwischen Buckets und AWS Konten.
Spezifische Befehle, die die Flexibilität von S3DistCP in realen Szenarien demonstrieren, finden Sie im Big Data-Blog unter Sieben Tipps zur Verwendung von S3 DistCp
Wie bei DistCp S3 DistCp wird häufig MapReduce auf verteilte Weise kopiert. Kopier-, Fehlerbehandlungs-, Wiederherstellungs- und Berichterstellungsaufgaben werden auf mehrere Server verteilt. Weitere Informationen zum DistCp Open-Source-Projekt Apache finden Sie in der DistCpAnleitung
Wenn S3 DistCp einige oder alle der angegebenen Dateien nicht kopieren kann, schlägt der Cluster-Schritt fehl und gibt einen Fehlercode ungleich Null zurück. In diesem Fall bereinigt S3 teilweise kopierte Dateien DistCp nicht.
Wichtig
S3 unterstützt DistCp keine Amazon S3 S3-Bucket-Namen, die den Unterstrich enthalten.
S3 unterstützt DistCp keine Verkettung von 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.
DistCp S3-Optionen
S3 ist zwar ähnlich DistCp, DistCp unterstützt aber verschiedene Optionen, mit denen Sie die Art und Weise ändern können, wie Daten kopiert und komprimiert werden.
Wenn Sie S3 aufrufenDistCp, 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 DistCp S3-Argumente sind in der folgenden Tabelle aufgeführt.
Option | Beschreibung | Erforderlich |
---|---|---|
‑‑src=LOCATION
|
Der Speicherort der zu kopierenden Daten. Hierbei kann es sich entweder um einen HDFS- oder Amazon-S3-Speicherort handeln. Beispiel: WichtigS3 unterstützt DistCp keine Amazon S3 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: WichtigS3 unterstützt DistCp keine Amazon S3 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 beim Schritt S3 DistCp fehl und gibt einen Fehler zurück. 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 von S3 DistCp 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 mit SSL übertragen und in Amazon S3 automatisch mit einem AWS serviceseitigen Schlüssel verschlüsselt werden. Beim Abrufen von Daten mit S3 DistCp werden die Objekte automatisch entschlü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, veranlasst diese Option S3, die kopierten Dateien vom Quellspeicherort DistCp zu löschen. 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. S3 DistCp verwendet den mehrteiligen Upload, wenn Daten kopiert werden, die 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
|
Erstellt eine mit Gzip komprimierte Textdatei, die eine Liste aller von S3 kopierten Dateien enthält. DistCp Beispiel: |
Nein |
‑‑previousManifest=PATH
|
Liest eine Manifestdatei, die bei einem früheren Aufruf von S3 DistCp mit dem Beispiel: |
Nein |
‑‑requirePreviousManifest |
Erfordert ein vorheriges Manifest, das während eines vorherigen Aufrufs von S3 DistCp erstellt wurde. 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, DistCp versucht S3, die Speicherklasse beizubehalten. Beispiel: |
Nein |
‑‑srcPrefixesFile=PATH |
Eine Textdatei in Amazon S3 (s3://), HDFS (hdfs:///) oder dem lokalen Dateisystem (file:/) mit einer Liste von Wenn Beispiel: |
Nein |
Zusätzlich zu den oben genannten Optionen DistCp implementiert S3 die Tool-Schnittstelle
S3 DistCp als Schritt in einem Cluster hinzufügen
Sie können S3 aufrufen, DistCp indem Sie es 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 zeigen das Hinzufügen eines DistCp S3-Schritts 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 einem laufenden Cluster einen DistCp S3-Schritt hinzuzufügen, verwenden Sie den AWS CLI
Weitere Informationen zur Verwendung von Amazon EMR-Befehlen in der AWS CLI finden Sie in der AWS CLI Befehlsreferenz.
-
Um einem Cluster, der S3 aufruft, einen Schritt hinzuzufügenDistCp, übergeben Sie die Parameter, die angeben, wie S3 den Kopiervorgang ausführen DistCp soll, als Argumente.
Im folgenden Beispiel werden Daemon-Protokolle von Amazon S3 in
hdfs:///output
kopiert. Im folgenden Befehl:-
‑‑cluster-id
gibt den Cluster an. -
Jar
ist der Speicherort der DistCp S3-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. -
Args
ist eine durch Kommas getrennte Liste der Optionsname-Wert-Paare, die an S3 übergeben werden sollen. DistCp Eine vollständige Liste der verfügbaren Optionen finden Sie unter DistCp S3-Optionen.
Um einem laufenden Cluster einen DistCp S3-Kopierschritt hinzuzufügen, fügen Sie wie
in diesem Beispiel Folgendes in eine JSON-Datei ein, die in Amazon S3 oder Ihrem lokalen Dateisystem gespeichert ist.myStep.json
j-3GYXXXXXX9IOK
Ersetzen Sie es durch Ihre Cluster-ID undamzn-s3-demo-bucket
ersetzen Sie es durch Ihren Amazon S3 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-id
j-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.json
j-3GYXXXXXX9IOK
Ersetzen Sie es durch Ihre Cluster-ID und amzn-s3-demo-bucket
ersetzen Sie es durch Ihren Amazon S3 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"
}
]