Cloud-Shuffle-Speicher-Plugin für Apache Spark
Das Cloud-Shuffle-Speicher-Plugin ist ein mit der ShuffleDataIO-APIjoin, reduceByKey, groupByKey und repartition in Ihren Spark-Anwendungen ausgelöst werden. Dadurch werden häufige Ausfälle oder Preis-/Leistungsverschiebungen bei Ihren Serverless-Datenanalyseaufträgen und Pipelines reduziert.
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 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://: Der Pfad, in dem Ihre Shuffle-Dateien gespeichert werden.bucket-name/shuffle-file-dir
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
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.
<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>
Alternativ können Sie die Binärdateien direkt von AWS Glue-Maven-Artefakten herunterladen und wie folgt in Ihre Spark-Anwendung einbinden.
#!/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
Dies sind optionale Konfigurationswerte, die das Amazon-S3-Zufallsverhalten steuern.
spark.shuffle.storage.s3.enableServerSideEncryption: Aktivieren/Deaktivieren von S3 SSE für Shuffle- und Spill-Dateien. Der Standardwert isttrue.spark.shuffle.storage.s3.serverSideEncryption.algorithm: Der zu verwendende SSE-Algorithmus. Der Standardwert istAES256.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
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, die Spark-Version und die zugehörige Plugin-Version mit Amazon-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-LATEST.jar |
License
Die Software-Binärdatei für dieses Plugin ist unter der Apache-2.0-Lizenz lizenziert.