

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.

# Speichern von Spark-Shuffle-Daten
<a name="monitor-spark-shuffle-manager"></a>

Shuffling ist ein wichtiger Schritt in einem Spark-Job, wenn Daten zwischen Partitionen neu angeordnet werden. Dies ist erforderlich, da umfassende Transformationen wie `join`, ` groupByKey`, `reduceByKey` und `repartition` Informationen von anderen Partitionen benötigen, um die Verarbeitung abzuschließen. Spark sammelt die erforderlichen Daten von jeder Partition und kombiniert sie zu einer neuen Partition. Beim Mischen werden Daten auf die Festplatte geschrieben und über das Netzwerk übertragen. Infolgedessen ist der Shuffle-Vorgang an die lokale Festplattenkapazität gebunden. Spark gibt den Fehler `No space left on device` oder den Fehler ` MetadataFetchFailedException` aus, wenn auf dem Executor nicht genügend Speicherplatz übrig ist und keine Wiederherstellung vorliegt.

**Anmerkung**  
 AWS Glue Das Spark-Shuffle-Plugin mit Amazon S3 wird nur für AWS Glue ETL-Jobs unterstützt. 

**Lösung**  
Mit AWS Glue können Sie nun Amazon S3 zum Speichern von Spark-Shuffle-Daten verwenden. Amazon S3 ist ein Objektspeicherservice, der branchenführende Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet. Diese Lösung teilt Rechenleistung und Speicher für Ihre Spark-Aufträge auf und bietet vollständige Elastizität und kostengünstigen Shuffle-Speicher, sodass Sie Ihre Shuffle-intensiven Workloads zuverlässig ausführen können.

![\[Spark workflow showing Map and Reduce stages using Amazon S3 for shuffle data storage.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gs-s3-shuffle-diagram.png)


Wir stellen ein neues Cloud-Shuffle-Speicher-Plugin für Apache Spark zur Verwendung von Amazon S3 vor. Sie können Amazon-S3-Shuffling aktivieren, um Ihre AWS Glue-Aufträge zuverlässig ohne Fehler auszuführen, wenn bekannt ist, dass sie durch die lokale Festplattenkapazität für große Shufflevorgänge gebunden sind. In einigen Fällen ist das Shuffling zu Amazon S3 geringfügig langsamer als die lokale Festplatte (oder EBS), wenn Sie eine große Anzahl kleiner Partitionen oder Shuffle-Dateien haben, die in Amazon S3 geschrieben wurden.

## Voraussetzungen für die Verwendung des Cloud-Shuffle-Speicher-Plugins
<a name="monitor-spark-shuffle-manager-prereqs"></a>

 Um das Cloud Shuffle Storage Plugin mit AWS Glue ETL-Jobs zu verwenden, benötigen Sie Folgendes: 
+ Ein Amazon-S3-Bucket, der sich in der gleichen Region befindet, in der Ihr Auftrag ausgeführt wird, um die Shuffle- und Ausgabedaten zwischenzuspeichern. Das Amazon-S3-Präfix des Shuffle-Speichers kann wie im folgenden Beispiel mit `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/` angegeben werden:

  ```
  --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  ```
+  Legen Sie die Lebenszyklusrichtlinien für den Amazon-S3-Speicher auf das *Präfix* fest (z. B. `glue-shuffle-data`), da der Shuffle-Manager die Dateien nach Abschluss der Aufgabe nicht bereinigt. Die dazwischen liegenden Shuffle- und Ausgabedaten sollten nach Beendigung eines Auftrags gelöscht werden. Benutzer können Richtlinien für einen kurzen Lebenszyklus für das Präfix festlegen. Anweisungen zum Einrichten einer Amazon-S3-Lebenszyklusrichtlinie finden Sie unter [Lebenszykluskonfiguration für einen Bucket festlegen](https://docs.aws.amazon.com//AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) im Benutzerhandbuch für Amazon Simple Storage Service.

## AWS GlueSpark Shuffle Manager von der Konsole aus verwenden AWS
<a name="monitor-spark-shuffle-manager-using-console"></a>

Um den AWS Glue Spark-Shuffle-Manager bei der Konfiguration eines Jobs über die AWS Glue Konsole oder AWS Glue Studio einzurichten: Wählen Sie den Job-Parameter **-- write-shuffle-files-to -s3, um Amazon S3 S3-Shuffling** für den Job zu aktivieren.

![\[Job parameters interface showing --write-shuffle-files- parameter and option to add more.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gs-s3-shuffle.png)


## Verwendung des AWS Glue-Spark-Shuffle-Plugins
<a name="monitor-spark-shuffle-manager-using"></a>

Die folgenden Auftragsparameter aktivieren und optimieren die AWS Glue-Shuffle-Manager. Da es sich bei diesen Parametern um Flags handelt, werden die angegebenen Werte nicht berücksichtigt.
+ `--write-shuffle-files-to-s3` – Der wichtigste Flag, der den AWS Glue-Spark-Shuffle-Manager aktiviert, um Amazon-S3-Buckets zum Schreiben und Lesen von Shuffle-Daten zu verwenden. Wenn das Flag nicht angegeben ist, wird der Shuffle-Manager nicht verwendet.
+ `--write-shuffle-spills-to-s3` – (Nur von AWS Glue-Version 2.0 unterstützt). Ein optionales Flag, mit dem Sie Ausgabeateien in Amazon-S3-Buckets auslagern können, was zusätzliche Ausfallsicherheit für Ihren Spark-Auftrag bereitstellt. Das ist nur bei großen Workloads erforderlich, bei denen viele Daten unabsichtlich auf der Festplatte landen. Wenn das Flag nicht angegeben ist, werden keine Ausgabe-Zwischendateien geschrieben.
+ ` --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket>` – Ein weiterer optionaler Parameter, der den Amazon S3 Bucket angibt, in den Sie die Shuffle-Dateien schreiben. Standardmäßig /shuffle-data. `--TempDir` AWS Glue 3.0\$1 unterstützt das Schreiben von Shuffle-Dateien in mehrere Buckets, indem Buckets mit einem Kommatrennzeichen angegeben werden, wie in. `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/` Die Verwendung mehrerer Buckets verbessert die Leistung. 

Sie müssen Sicherheitskonfigurationseinstellungen vornehmen, um die Verschlüsselung im Ruhezustand für die Shuffle-Daten zu aktivieren. Weitere Informationen zu Sicherheitskonfigurationen finden Sie unter[Einrichten der Verschlüsselung in AWS Glue](set-up-encryption.md). AWS Glue unterstützt alle anderen Shuffle-bezogenen Konfigurationen, die von Spark bereitgestellt werden.

**Software-Binärdateien für das Cloud-Shuffle-Speicher-Plugin**  
Sie können auch die Software-Binärdateien des Cloud-Shuffle-Speicher-Plugins für Apache Spark unter der Apache-2.0-Lizenz herunterladen und in jeder Spark-Umgebung ausführen. Das neue Plugin bietet out-of-the Box-Unterstützung für Amazon S3 und kann auch einfach für die Verwendung anderer Formen von Cloud-Speicher wie [Google Cloud Storage und Microsoft Azure Blob Storage](https://github.com/aws-samples/aws-glue-samples/blob/master/docs/cloud-shuffle-plugin/README.md) konfiguriert werden. Weitere Informationen finden Sie unter [Cloud-Shuffle-Speicher-Plugin für Apache Spark](https://docs.aws.amazon.com/glue/latest/dg/cloud-shuffle-storage-plugin.html).

**Hinweise und Einschränkungen**  
Im Folgenden finden Sie Hinweise oder Einschränkungen für den AWS Glue-Shuffle-Manager:
+  AWS Glue Shuffle Manager löscht die (temporären) Shuffle-Datendateien, die in Ihrem Amazon S3 S3-Bucket gespeichert sind, nicht automatisch, nachdem ein Job abgeschlossen ist. Befolgen Sie zur Gewährleistung des Datenschutzes die Anweisungen in [Voraussetzungen für die Verwendung des Cloud-Shuffle-Speicher-Plugins](#monitor-spark-shuffle-manager-prereqs), bevor Sie das Cloud-Shuffle-Speicher-Plugin aktivieren. 
+ Sie können dieses Feature verwenden, wenn Ihre Daten verzerrt sind.

# Cloud-Shuffle-Speicher-Plugin für Apache Spark
<a name="cloud-shuffle-storage-plugin"></a>

Das Cloud-Shuffle-Speicher-Plugin ist ein mit der [`ShuffleDataIO`-API](https://github.com/apache/spark/blob/master/core/src/main/java/org/apache/spark/shuffle/api/ShuffleDataIO.java) kompatibles Apache-Spark-Plugin, das das Speichern von Shuffle-Daten auf Cloud-Speichersystemen (wie Amazon S3) ermöglicht. Es hilft Ihnen, die lokale Festplattenspeicherkapazität für große Shuffle-Operationen, die häufig durch Transformationen wie, `groupByKey` und `repartition` in Ihren Spark-Anwendungen ausgelöst werden `join``reduceByKey`, zu ergänzen oder zu ersetzen, wodurch häufige Ausfälle oder price/performance Störungen Ihrer serverlosen Datenanalysejobs und Pipelines reduziert werden.

**AWS Glue**  
In den AWS Glue-Versionen 3.0 und 4.0 ist das Plugin bereits vorinstalliert und ermöglichen das Shuffling zu Amazon S3 ohne zusätzliche Schritte. Weitere Informationen finden Sie unter [AWS Glue-Spark-Shuffle-Plugin mit Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-shuffle-manager.html) zur Aktivierung des Features für Ihre Spark-Anwendungen.

**Andere Spark-Umgebungen**  
Für das Plugin müssen die folgenden Spark-Konfigurationen in anderen Spark-Umgebungen festgelegt werden:
+ `--conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin`: Dies informiert Spark, dieses Plugin für Shuffle IO zu verwenden.
+ `--conf spark.shuffle.storage.path=s3://bucket-name/shuffle-file-dir`: Der Pfad, in dem Ihre Shuffle-Dateien gespeichert werden.

**Anmerkung**  
Das Plugin überschreibt eine Spark-Kernklasse. Daher muss das Plugin-Jar vor den Spark-Jars geladen werden. Sie können dies mit `userClassPathFirst` in On-Premises-YARN-Umgebungen tun, wenn das Plugin außerhalb von AWS Glue verwendet wird.

## Bündeln des Plugins mit Ihren Spark-Anwendungen
<a name="cloud-shuffle-storage-plugin-bundling"></a>

Sie können das Plugin mit Ihren Spark-Anwendungen und Spark-Verteilungen (Versionen 3.1 und höher) bündeln, indem Sie die Plugin-Abhängigkeit in Ihrem Maven `pom.xml` hinzufügen, während Sie Ihre Spark-Anwendungen lokal entwickeln. Weitere Informationen zu den Plugin- und Spark-Versionen finden Sie unter [Plugin-Versionen](#cloud-shuffle-storage-plugin-versions).

```
<repositories>
   ...
    <repository>
        <id>aws-glue-etl-artifacts</id>
        <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/ </url>
    </repository>
</repositories>
...
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>chopper-plugin</artifactId>
    <version>3.1-amzn-LATEST</version>
</dependency>
```

Sie können die Binärdateien alternativ direkt von AWS Glue Maven-Artefakten herunterladen und sie wie folgt in Ihre Spark-Anwendung integrieren.

```
#!/bin/bash
sudo wget -v https://aws-glue-etl-artifacts.s3.amazonaws.com/release/com/amazonaws/chopper-plugin/3.1-amzn-LATEST/chopper-plugin-3.1-amzn-LATEST.jar -P /usr/lib/spark/jars/
```

Beispiel spark-submit

```
spark-submit --deploy-mode cluster \
--conf spark.shuffle.storage.s3.path=s3://<ShuffleBucket>/<shuffle-dir> \
--conf spark.driver.extraClassPath=<Path to plugin jar> \ 
--conf spark.executor.extraClassPath=<Path to plugin jar> \
--class <your test class name> s3://<ShuffleBucket>/<Your application jar> \
```

## Optionale Konfigurationen
<a name="cloud-shuffle-storage-plugin-optional"></a>

Dies sind optionale Konfigurationswerte, die das Amazon-S3-Zufallsverhalten steuern. 
+ `spark.shuffle.storage.s3.enableServerSideEncryption`: Enable/disable S3 SSE für Shuffle- und Spill-Dateien. Der Standardwert ist `true`.
+ `spark.shuffle.storage.s3.serverSideEncryption.algorithm`: Der zu verwendende SSE-Algorithmus. Der Standardwert ist `AES256`.
+ `spark.shuffle.storage.s3.serverSideEncryption.kms.key`: Der KMS-Schlüssel-ARN, wenn SSE aws:kms aktiviert ist.

Neben diesen Konfigurationen müssen Sie möglicherweise Konfigurationen wie `spark.hadoop.fs.s3.enableServerSideEncryption` und **andere umgebungsspezifische Konfigurationen** festlegen, um sicherzustellen, dass die für Ihren Anwendungsfall geeignete Verschlüsselung angewendet wird.

## Plugin-Versionen
<a name="cloud-shuffle-storage-plugin-versions"></a>

Dieses Plugin wird für die Spark-Versionen unterstützt, die jeder AWS Glue Version zugeordnet sind. Die folgende Tabelle zeigt die AWS Glue Version, Spark-Version und die zugehörige Plugin-Version mit Amazon S3 S3-Speicherort für die Software-Binärdatei des Plugins.


| AWS Glue-Version | Spark-Version | Plugin-Version | Amazon-S3-Speicherort | 
| --- | --- | --- | --- | 
| 3.0 | 3.1 | 3.1-amzn-LATEST |  s3://aws-glue-etl-artifacts/release/com/amazonaws/chopper-plugin/3.1-amzn-0/chopper-Plugin-3.1-amzn-latest.jar  | 
| 4,0 | 3.3 | 3.3-amzn-LATEST |  s3://aws-glue-etl-artifacts/release/com/amazonaws/chopper-plugin/3.3-amzn-0/chopper-plugin-3.3-amzn-neuest.jar  | 

## License
<a name="cloud-shuffle-storage-plugin-binary-license"></a>

Die Software-Binärdatei für dieses Plugin ist unter der Apache-2.0-Lizenz lizenziert.