Plug-in di archiviazione cloud shuffle per Apache Spark - AWS Glue

Plug-in di archiviazione cloud shuffle per Apache Spark

Il plug-in di archiviazione cloud shuffle è un plug-in Apache Spark compatibile con l'API ShuffleDataIO che consente di archiviare dati shuffle su sistemi di archiviazione cloud (come Amazon S3). Consente di integrare o sostituire la capacità di archiviazione locale su disco per operazioni shuffle di grandi dimensioni, normalmente innescate da trasformazioni come join, reduceByKey, groupByKey e repartition nelle applicazioni Spark, riducendo così i guasti più comuni o la dislocazione prezzo/prestazioni dei processi e delle pipeline di analisi dei dati serverless.

AWS Glue

Le versioni 3.0 e 4.0 di AWS Glue includono il plug-in preinstallato e pronto per abilitare lo shuffling su Amazon S3 senza passaggi aggiuntivi. Per ulteriori informazioni, consulta Plug-in shuffle di AWS Glue Spark con Amazon S3 per abilitare la funzionalità per le tue applicazioni Spark.

Altri ambienti Spark

Il plug-in richiede che in altri ambienti Spark siano impostate le seguenti configurazioni Spark:

  • --conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin: indica a Spark di utilizzare questo plug-in per Shuffle IO.

  • --conf spark.shuffle.storage.path=s3://bucket-name/shuffle-file-dir: il percorso in cui verranno archiviati i file shuffle.

Nota

Il plug-in sovrascrive una classe principale di Spark. Di conseguenza, il jar del plug-in deve essere caricato prima dei jar di Spark. Ciò è possibile utilizzando userClassPathFirst in ambienti YARN on-premise se il plug-in viene utilizzato all'esterno di AWS Glue.

Creazione di bundle per il plug-in con le applicazioni Spark

È possibile raggruppare il plug-in con le applicazioni Spark e le distribuzioni Spark (versioni 3.1 e successive) aggiungendo la dipendenza del plug-in nel file Mavenpom.xml mentre si sviluppano le applicazioni Spark in locale. Per ulteriori informazioni sulle versioni del plug-in e di Spark, consulta Versioni del plug-in.

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

In alternativa, è possibile scaricare i binari direttamente dagli artefatti di AWS Glue Maven e includerli nell'applicazione Spark come riportato di seguito.

#!/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/

Esempio 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> \

Configurazioni facoltative

Questi sono i valori delle configurazioni facoltative che controllano il comportamento dello shuffle di Amazon S3.

  • spark.shuffle.storage.s3.enableServerSideEncryption: abilita/disabilita S3 SSE per i file shuffle e spill. Il valore predefinito è true.

  • spark.shuffle.storage.s3.serverSideEncryption.algorithm: l'algoritmo SSE da utilizzare. Il valore predefinito è AES256.

  • spark.shuffle.storage.s3.serverSideEncryption.kms.key: l'ARN della chiave KMS quando è abilitato SSE aws:kms.

Oltre a queste configurazioni, potrebbe essere necessario impostarne altre come spark.hadoop.fs.s3.enableServerSideEncryption e configurazioni aggiuntive specifiche dell'ambiente per garantire l'applicazione della crittografia appropriata per il caso d'uso.

Versioni del plug-in

Questo plug-in è supportato per le versioni Spark associate a ogni versione di AWS Glue. La tabella seguente mostra la versione di AWS Glue, la versione di Spark e la versione del plug-in associata alla posizione di Amazon S3 per il file binario del software del plug-in.

Versione AWS Glue Versione di Spark Versione del plug-in Posizione di Amazon S3.
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

Licenza

Il software del plug-in è concesso in licenza ai sensi della licenza Apache-2.0.