Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

DistCp S3 (s3-dist-cp) - Amazon EMR

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.

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. AWS

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 in der Apache Hadoop-Dokumentation.

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: ‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node

Wichtig

S3 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: ‑‑dest=hdfs:///output

Wichtig

S3 unterstützt DistCp keine Amazon S3 S3-Bucket-Namen, die den Unterstrich enthalten.

Ja
‑‑srcPattern=PATTERN

Ein regulärer Ausdruck, der die Kopieroperation auf eine Teilmenge der Daten unter ‑‑src filtert. Wenn weder ‑‑srcPattern noch ‑‑groupBy angegeben ist, werden alle Daten unter ‑‑src in ‑‑dest kopiert.

Wenn das Argument des regulären Ausdrucks Sonderzeichen wie Sternchen (*) enthält, muss entweder der reguläre Ausdruck oder die gesamte ‑‑args-Zeichenfolge in einfache Anführungszeichen (') gesetzt werden.

Beispiel: ‑‑srcPattern=.*daemons.*-hadoop-.*

Nein
‑‑groupBy=PATTERN

Ein regulärer Ausdruck, der S3 veranlasst, Dateien DistCp zu verketten, die dem Ausdruck entsprechen. Sie können mit dieser Option beispielsweise alle Protokolldateien kombinieren, die innerhalb einer Stunde in einer einzigen Datei geschrieben wurden. Der verkettete Dateiname ist der Wert, der dem regulären Ausdruck für die Gruppe entspricht.

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 ‑‑args-Zeichenfolge in einfache Anführungszeichen (') gesetzt werden.

Wenn ‑‑groupBy angegeben ist, werden nur Dateien kopiert, die dem angegebenen Muster entsprechen. Sie müssen ‑‑groupBy und ‑‑srcPattern nicht gleichzeitig angeben.

Beispiel: ‑‑groupBy=.*subnetid.*([0-9]+-[0-9]+-[0-9]+-[0-9]+).*

Nein
‑‑targetSize=SIZE

Die Größe (in Mebibyte (MiB)) der Dateien, die basierend auf der ‑‑groupBy-Option erstellt werden sollen. Dieser Wert muss eine Ganzzahl sein. Wenn dieser ‑‑targetSize Wert gesetzt ist, DistCp versucht S3, dieser Größe zu entsprechen. Die tatsächliche Größe der kopierten Dateien kann größer oder kleiner als dieser Wert sein. Aufträge werden basierend auf der Größe der Datendatei aggregiert. Deshalb ist es möglich, dass die Zieldateigröße der Quelldateigröße entspricht.

Wenn die durch ‑‑groupBy verketteten Dateien größer als der Wert ‑‑targetSize sind, werden sie in Teildateien aufgelöst und sequenziell mit einem an das Ende angefügten numerischen Wert benannt. Eine Datei, die beispielsweise zu myfile.gz verkettet ist, wird wie folgt in mehrere Teile unterteilt: myfile0.gz, myfile1.gz usw.

Beispiel: ‑‑targetSize=2

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 ‑‑appendToLastFile mit ‑‑groupBy verwenden, werden neue Daten an Dateien angefügt, die denselben Gruppen entsprechen. Diese Option respektiert auch das ‑‑targetSize-Verhalten, wenn sie mit ‑‑groupBy. verwendet wird.

Nein
‑‑outputCodec=CODEC

Gibt den Komprimierungs-Codec für die kopierten Dateien an. Mögliche Werte sind: gzip, gz, lzo, snappy oder none. Sie können diese Option beispielsweise verwenden, um Eingabedateien, die mit Gzip komprimiert sind, in Ausgabedateien mit LZO-Komprimierung zu konvertieren oder um die Dateien im Rahmen der Kopieroperation zu dekomprimieren. Wenn Sie einen Ausgabe-Codec auswählen, wird dem Dateinamen die entsprechende Erweiterung angefügt (z. B. für gz und gzip die Erweiterung .gz). Wenn Sie keinen Wert für ‑‑outputCodec angeben, werden die Dateien ohne Änderung der Komprimierung kopiert.

Beispiel: ‑‑outputCodec=lzo

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: ‑‑s3ServerSideEncryption

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: ‑‑deleteOnSuccess

Nein
‑‑disableMultipartUpload

Deaktiviert die Verwendung des mehrteiligen Uploads.

Beispiel: ‑‑disableMultipartUpload

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 multipartUploadChunkSize größer sind als. Um die Arbeitsleistung zu verbessern, können Sie die Größe der einzelnen Teile erhöhen. Die Standardgröße beträgt 128 MiB.

Beispiel: ‑‑multipartUploadChunkSize=1000

Nein
‑‑numberFiles

Stellt Ausgabedateien sequenzielle Nummern voran. Die Zählung beginnt bei 0, es sei denn, von ‑‑startingIndex wird ein anderer Wert angegeben.

Beispiel: ‑‑numberFiles

Nein
‑‑startingIndex=INDEX

Wird mit ‑‑numberFiles verwendet, um die erste Nummer in der Sequenz anzugeben.

Beispiel: ‑‑startingIndex=1

Nein
‑‑outputManifest=FILENAME

Erstellt eine mit Gzip komprimierte Textdatei, die eine Liste aller von S3 kopierten Dateien enthält. DistCp

Beispiel: ‑‑outputManifest=manifest-1.gz

Nein
‑‑previousManifest=PATH

Liest eine Manifestdatei, die bei einem früheren Aufruf von S3 DistCp mit dem ‑‑outputManifest Flag erstellt wurde. Wenn das ‑‑previousManifest Flag gesetzt ist, DistCp schließt S3 die im Manifest aufgelisteten Dateien vom Kopiervorgang aus. Wenn ‑‑outputManifest zusammen mit ‑‑previousManifest angegeben ist, erscheinen die im vorherigen Manifest aufgeführten Dateien auch in der neuen Manifestdatei, obwohl die Dateien nicht kopiert werden.

Beispiel: ‑‑previousManifest=/usr/bin/manifest-1.gz

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 ‑‑previousManifest um, dass S3 DistCp die angegebene Manifestdatei als Liste der zu kopierenden Dateien verwendet, anstatt als Liste von Dateien, die vom Kopieren ausgeschlossen werden sollen.

Beispiel: ‑‑copyFromManifest ‑‑previousManifest=/usr/bin/manifest-1.gz

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 s3.amazonaws.com verwendet. Eine Liste der Amazon-S3-Endpunkte finden Sie unter Regionen und Endpunkte.

Beispiel: ‑‑s3Endpoint=s3.eu-west-1.amazonaws.com

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: ‑‑storageClass=STANDARD

Nein
‑‑srcPrefixesFile=PATH

Eine Textdatei in Amazon S3 (s3://), HDFS (hdfs:///) oder dem lokalen Dateisystem (file:/) mit einer Liste von src-Präfixen, in der ein Präfix pro Zeile aufgeführt wird.

Wenn srcPrefixesFile angegeben, listet S3 DistCp den src-Pfad nicht auf. Stattdessen wird eine Quellliste als kombiniertes Ergebnis der Auflistung aller in dieser Datei angegebenen Präfixe erstellt. Der relative Pfad im Vergleich zum src-Pfad, wird statt dieser Präfixe verwendet, um die Zielpfade zu generieren. Wenn srcPattern angegeben ist, wird dieser Wert auf die kombinierten Listenergebnisse der Quellpräfixe angewendet, um die Eingabe weiter zu filtern. Wenn copyFromManifest verwendet wird, werden die Objekte im Manifest kopiert und srcPrefixesFile wird ignoriert.

Beispiel: ‑‑srcPrefixesFile=PATH

Nein

Zusätzlich zu den oben genannten Optionen DistCp implementiert S3 die Tool-Schnittstelle, was bedeutet, dass es die generischen Optionen unterstützt.

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:

    Um einem laufenden Cluster einen DistCp S3-Kopierschritt hinzuzufügen, fügen Sie wie myStep.json in diesem Beispiel Folgendes in eine JSON-Datei ein, die in Amazon S3 oder Ihrem lokalen Dateisystem gespeichert ist. j-3GYXXXXXX9IOKErsetzen 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=.*[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 myStep.json in diesem Beispiel ein. j-3GYXXXXXX9IOKErsetzen 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" } ]
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.