

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Stockage des données réorganisées Spark
<a name="monitor-spark-shuffle-manager"></a>

La réorganisation est une étape importante d'une tâche Spark chaque fois que les données sont réarrangées entre des partitions. Elle est nécessaire parce que de larges transformations telles que `join`, ` groupByKey`, `reduceByKey` et `repartition` ont besoin d'informations provenant d'autres partitions pour terminer le traitement. Spark rassemble les données requises de chaque partition et les combine dans une nouvelle partition. Lors d'une réorganisation, les données sont écrites sur le disque et transférées via le réseau. Par conséquent, l'opération de réorganisation est liée à la capacité du disque local. Spark émet une erreur `No space left on device` ou ` MetadataFetchFailedException` lorsqu'il n'y a pas assez d'espace disque sur le programme d'exécution et qu'il n'y a pas de récupération.

**Note**  
 AWS Glue Le plugin Spark shuffle avec Amazon S3 n'est pris en charge que pour les tâches AWS Glue ETL. 

**Solution**  
Avec AWS Glue, vous pouvez désormais utiliser Amazon S3 pour stocker des données de réorganisation Spark. Amazon S3 est un service de stockage d'objets qui offre une évolutivité, une disponibilité des données, une sécurité et des performances de pointe. Cette solution désagrège le calcul et le stockage pour vos tâches Spark, et offre une élasticité totale et un stockage économique de la réorganisation, ce qui vous permet d'exécuter vos applications les plus complexes de manière fiable.

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


Nous introduisons un nouveau plug-in Cloud Shuffle Storage pour Apache Spark afin d'utiliser Amazon S3. Vous pouvez activer la réorganisation Amazon S3 pour exécuter vos tâches AWS Glue de manière fiable, sans échec, si elles sont liées par la capacité du disque local pour les opérations de réorganisation volumineuses. Dans certains cas, une réorganisation vers Amazon S3 est légèrement plus lente que vers un disque local (ou EBS) si vous avez un grand nombre de petites partitions ou de fichiers réorganisés écrits dans Amazon S3.

## Conditions préalables à l'utilisation du plug-in de stockage de réorganisation du cloud.
<a name="monitor-spark-shuffle-manager-prereqs"></a>

 Pour utiliser le plug-in de stockage Cloud Shuffle avec des tâches AWS Glue ETL, vous avez besoin des éléments suivants : 
+ Un compartiment Amazon S3 situé dans la même région que celle de votre exécution de tâche, pour stocker la réorganisation intermédiaire et les données déversées. Le préfixe Amazon S3 du stockage de réorganisation peut être spécifié avec `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/`, comme dans l'exemple suivant :

  ```
  --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  ```
+  Définissez les stratégies de cycle de vie du stockage Amazon S3 sur le *préfixe* (tel que `glue-shuffle-data`), car le gestionnaire de réorganisation ne nettoie pas les fichiers une fois la tâche terminée. La réorganisation intermédiaire et les données déversées doivent être supprimées une fois la tâche terminée. Les utilisateurs peuvent définir des stratégies de cycle de vie court pour le préfixe. Les instructions de configuration d'une stratégie de cycle de vie Amazon S3 sont disponibles dans la section [Configuration du cycle de vie d'un compartiment](https://docs.aws.amazon.com//AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) dans le Guide de l'utilisateur Amazon Simple Storage Service.

## Utilisation du gestionnaire de shuffle AWS Glue Spark depuis la console AWS
<a name="monitor-spark-shuffle-manager-using-console"></a>

Pour configurer le gestionnaire de shuffle AWS Glue Spark à l'aide de la AWS Glue console ou de AWS Glue Studio lors de la configuration d'une tâche : choisissez le paramètre de tâche **-- write-shuffle-files-to -s3** pour activer le shuffle Amazon S3 pour la tâche.

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


## Utilisation du plug-in de réorganisation Spark AWS Glue
<a name="monitor-spark-shuffle-manager-using"></a>

Les paramètres de tâche suivants activent et affinent le gestionnaire de réorganisation AWS Glue. Ces paramètres étant des indicateurs, les valeurs fournies ne sont pas prises en compte.
+ `--write-shuffle-files-to-s3` : l'indicateur principal, qui active le gestionnaire de réorganisation AWS Glue Spark pour utiliser des compartiments Amazon S3 pour écrire et lire des données de réorganisation. Lorsque l'indicateur n'est pas spécifié, le gestionnaire de réorganisation n'est pas utilisé.
+ `--write-shuffle-spills-to-s3` – (Pris en charge uniquement dans AWS Glue version 2.0). Indicateur facultatif qui vous permet de décharger des fichiers de déversement dans des compartiments Amazon S3, pour une résilience supplémentaire de votre tâche Spark. Ceci n'est requis que pour les charges de travail volumineuses qui déversent beaucoup de données sur le disque. Lorsque l'indicateur n'est pas spécifié, aucun fichier de déversement intermédiaire n'est écrit.
+ ` --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket>` – autre indicateur facultatif spécifiant le compartiment Amazon S3 dans lequel vous écrivez les fichiers de réorganisation. Par défaut, `--TempDir` /shuffle-data. AWS Glue La version 3.0\$1 prend en charge l'écriture de fichiers shuffle dans plusieurs compartiments en spécifiant des compartiments avec un délimiteur par virgule, comme dans. `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/` L'utilisation de plusieurs compartiments améliore les performances. 

Vous devez fournir des paramètres de configuration de sécurité pour activer le chiffrement au repos des données de réorganisation. Pour plus d’informations sur les configurations de sécurité, consultez [Configuration du chiffrement dans AWS Glue](set-up-encryption.md). AWS Glue prend en charge toutes les autres configurations de réorganisation fournies par Spark.

**Binaires logiciels pour le plug-in Cloud Shuffle Storage**  
Vous pouvez également télécharger les fichiers binaires du plug-in Cloud Shuffle Storage pour Apache Spark sous la licence Apache 2.0 et l'exécuter dans n'importe quel environnement Spark. Le nouveau plugin est compatible avec out-of-the Amazon S3 et peut également être facilement configuré pour utiliser d'autres formes de stockage dans le cloud, telles que [Google Cloud Storage et Microsoft Azure Blob Storage](https://github.com/aws-samples/aws-glue-samples/blob/master/docs/cloud-shuffle-plugin/README.md). Pour plus d'informations, consultez [Cloud Shuffle Storage Plugin for Apache Spark](https://docs.aws.amazon.com/glue/latest/dg/cloud-shuffle-storage-plugin.html) (Plug-in Cloud Shuffle Storage pour Apache Spark).

**Remarques et limitations**  
Ci-dessous des remarques ou limitations concernant le gestionnaire de réorganisation AWS Glue.
+  AWS Glue le gestionnaire de shuffle ne supprime pas automatiquement les fichiers de données de shuffle (temporaires) stockés dans votre compartiment Amazon S3 une fois la tâche terminée. Pour garantir la protection des données, suivez les instructions fournies dans [Conditions préalables à l'utilisation du plug-in de stockage de réorganisation du cloud.](#monitor-spark-shuffle-manager-prereqs) avant d'activer le plug-in Cloud Shuffle Storage. 
+ Vous pouvez utiliser cette fonction si vos données sont biaisées.

# Cloud Shuffle Storage Plugin pour Apache Spark
<a name="cloud-shuffle-storage-plugin"></a>

Cloud Shuffle Storage Plugin est un plug-in Apache Spark compatible avec l’[API `ShuffleDataIO`](https://github.com/apache/spark/blob/master/core/src/main/java/org/apache/spark/shuffle/api/ShuffleDataIO.java) qui permet de stocker des données aléatoires sur des systèmes de stockage cloud (tels qu’Amazon S3). Il vous permet de compléter ou de remplacer la capacité de stockage sur disque local pour les opérations de remaniement de grande envergure, généralement déclenchées par des transformations telles que `join``reduceByKey`, `groupByKey` et `repartition` dans vos applications Spark, réduisant ainsi les défaillances ou les price/performance dislocations fréquentes de vos tâches et pipelines d'analyse de données sans serveur.

**AWS Glue**  
Sur les versions 3.0 et 4.0 de AWS Glue, le plug-in est préinstallé et prêt à autoriser la lecture aléatoire dans Amazon S3 sans aucune étape supplémentaire. Pour plus d’informations, consultez [AWS Glue Spark shuffle plugin with Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-shuffle-manager.html) afin d’activer cette fonctionnalité pour vos applications Spark.

**Autres environnements Spark**  
Le plug-in exige que les configurations Spark suivantes soient définies sur d’autres environnements Spark :
+ `--conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin` : indique à Spark d’utiliser ce plug-in pour Shuffle IO.
+ `--conf spark.shuffle.storage.path=s3://bucket-name/shuffle-file-dir` : chemin de stockage de vos fichiers de lecture aléatoire.

**Note**  
Le plug-in remplace une classe principale de Spark. Par conséquent, le fichier jar du plug-in doit être chargé avant les fichiers jar de Spark. Pour ce faire, utilisez `userClassPathFirst` dans des environnements YARN sur site si le plug-in est utilisé hors de AWS Glue.

## Création d’une offre groupée du plug-in pour vos applications Spark
<a name="cloud-shuffle-storage-plugin-bundling"></a>

Vous pouvez intégrer le plug-in à vos applications et distributions Spark (versions 3.1 et supérieures) en ajoutant la dépendance du plug-in dans votre fichier `pom.xml` Maven, tout en développant vos applications Spark en local. Pour plus d’informations sur les versions du plug-in et de Spark, consultez [Versions du plug-in](#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>
```

Vous pouvez également télécharger les fichiers binaires directement depuis les artefacts AWS Glue Maven et les inclure dans votre application Spark comme suit.

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

Exemple d’utilisation de 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> \
```

## Configurations facultatives
<a name="cloud-shuffle-storage-plugin-optional"></a>

Il s’agit de valeurs de configuration facultatives qui contrôlent le comportement de lecture aléatoire d’Amazon S3. 
+ `spark.shuffle.storage.s3.enableServerSideEncryption`: Enable/disable S3 SSE pour les fichiers shuffle et spill. La valeur par défaut est `true`.
+ `spark.shuffle.storage.s3.serverSideEncryption.algorithm` : algorithme SSE à utiliser. La valeur par défaut est `AES256`.
+ `spark.shuffle.storage.s3.serverSideEncryption.kms.key` : ARN de la clé KMS lorsque SSE aws:kms est activé.

Outre ces configurations, vous devrez peut-être définir des configurations telles que `spark.hadoop.fs.s3.enableServerSideEncryption` et **d’autres configurations spécifiques à l’environnement** pour garantir que le chiffrement approprié est appliqué à votre cas d’utilisation.

## Versions du plug-in
<a name="cloud-shuffle-storage-plugin-versions"></a>

Ce plugin est pris en charge pour les versions de Spark associées à chaque AWS Glue version. Le tableau suivant indique la AWS Glue version, la version de Spark et la version du plugin associée avec l'emplacement Amazon S3 du binaire logiciel du plugin.


| Version de l’AWS Glue | Version de Spark | Version du plug-in | Emplacement 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  | 

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

Le fichier binaire logiciel de ce plug-in est concédé sous licence dans le cadre de la licence Apache-2.0.