Stockage des données Spark Shuffle - AWS Glue

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

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 AWS Glue ETL tâches.

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.

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, le transfert vers Amazon S3 est légèrement plus lent que le disque local (ouEBS) si vous avez un grand nombre de petites partitions ou de fichiers de brassage écrits sur Amazon S3.

Conditions préalables à l'utilisation du plug-in de stockage de réorganisation du cloud.

Pour utiliser le plug-in de stockage Cloud Shuffle avec des AWS Glue ETL tâches, 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 dans le Guide de l'utilisateur Amazon Simple Storage Service.

Utilisation du gestionnaire de shuffle AWS Glue Spark depuis la console AWS

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.

Utilisation du plug-in de réorganisation Spark AWS Glue

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+ 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. 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. Pour plus d'informations, consultez Cloud Shuffle Storage Plugin for Apache Spark (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. avant d'activer le plug-in Cloud Shuffle Storage.

  • Vous pouvez utiliser cette fonction si vos données sont biaisées.