El complemento Cloud Shuffle Storage es un complemento de Apache Spark compatible con la API de ShuffleDataIO
join
, reduceByKey
, groupByKey
y repartition
en las aplicaciones de Spark, lo que reduce los errores comunes o la dislocación de precio y rendimiento de las canalizaciones y los trabajos de análisis de datos sin servidor.
AWS Glue
Las versiones 3.0 y 4.0 de AWS Glue incluyen el complemento preinstalado y listo para permitir la transferencia aleatoria a Amazon S3 sin ningún paso adicional. Para más información, consulte Complemento de mezclas aleatorias de Spark para AWS Glue con Amazon S3 para habilitar la característica en las aplicaciones de Spark.
Otros entornos de Spark
El complemento requiere que se establezcan las siguientes configuraciones de Spark en otros entornos de Spark:
--conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin
: esto indica a Spark que debe utilizar este complemento para Shuffle IO.--conf spark.shuffle.storage.path=s3://
: la ruta en la que se almacenarán los archivos aleatorios.bucket-name
/shuffle-file-dir
nota
El complemento sobrescribe una clase principal de Spark. Como resultado, el contenedor del complemento debe cargarse antes que los contenedores de Spark. Para ello, utilice userClassPathFirst
en entornos YARN locales si el complemento se utiliza fuera de AWS Glue.
Agrupación del complemento con las aplicaciones de Spark
Puede combinar el complemento con las aplicaciones de Spark y distribuciones de Spark (versiones 3.1 y posteriores) si agrega la dependencia del complemento en pom.xml
de Maven mientras desarrolla las aplicaciones de Spark de manera local. Para más información acerca del complemento y las versiones de Spark, consulte Versiones del complemento.
<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>
También puede descargar los archivos binarios de los artefactos de Maven de AWS Glue directamente e incluirlos en la aplicación de Spark de la siguiente manera.
#!/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/
Ejemplo 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>
\
Opciones de configuración opcionales
Estos son los valores de las opciones de configuración opcionales que controlan el comportamiento aleatorio de Amazon S3.
spark.shuffle.storage.s3.enableServerSideEncryption
: habilita y desactiva SSE de S3 para ordenar aleatoriamente y volcar archivos. El valor predeterminado estrue
.spark.shuffle.storage.s3.serverSideEncryption.algorithm
: el algoritmo de SSE que se va a usar. El valor predeterminado esAES256
.spark.shuffle.storage.s3.serverSideEncryption.kms.key
: el ARN de la clave de KMS cuando aws:kms de SSE está activado.
Junto con estas configuraciones, es posible que deba establecer configuraciones comospark.hadoop.fs.s3.enableServerSideEncryption
, y otras configuraciones específicas del entorno para garantizar que se aplique el cifrado adecuado para su caso de uso.
Versiones del complemento
Este complemento es compatible con las versiones de Spark asociadas a cada versión de AWS Glue. En la siguiente tabla, se muestra la versión de AWS Glue, la versión de Spark y la versión del complemento asociada a la ubicación de Amazon S3 del binario de software del complemento.
Versión de AWS Glue | Versión de Spark | Versión del complemento | Ubicación de 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 |
Licencia
El binario de software de este complemento cuenta con la licencia de Apache-2.0.