Utilisation d’Auto Scaling pour AWS Glue - 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.

Utilisation d’Auto Scaling pour AWS Glue

Auto Scaling est disponible pour vos AWS Glue ETL, vos sessions interactives et vos tâches de streaming avec AWS Glue la version 3.0 ou ultérieure.

Lorsque Auto Scaling est activé, vous bénéficiez des avantages suivants :

  • AWS Glue ajoute et supprime automatiquement les employés du cluster en fonction du parallélisme à chaque étape ou micro-lot de la tâche exécutée.

  • Cela vous évite d'avoir à expérimenter et à décider du nombre de travailleurs à affecter à vos tâches AWS Glue ETL.

  • Avec le nombre maximum de travailleurs donné, AWS Glue choisira les ressources de la bonne taille pour la charge de travail.

  • Vous pouvez voir comment la taille du cluster change pendant l'exécution de la tâche en consultant les CloudWatch indicateurs sur la page de détails de l'exécution de la tâche dans AWS Glue Studio.

Auto Scaling pour les tâches AWS Glue ETL et de streaming permet d'étendre et d'intégrer à la demande les ressources informatiques de vos tâches. AWS Glue L'augmentation d'échelle à la demande vous aide à allouer uniquement les ressources de calcul requises initialement au démarrage de l'exécution de la tâche, ainsi qu'à allouer les ressources requises en fonction de la demande pendant la tâche.

Auto Scaling permet également une mise à l'échelle dynamique des ressources AWS Glue d'une tâche au cours d'une tâche. Au cours de l'exécution d'une tâche, lorsque plus d'exécuteurs sont demandés par votre application Spark, plus d'employés seront ajoutés au cluster. Lorsque l'exécuteur est inactif sans tâches de calcul actives, il sera supprimé de même que l'employé correspondant.

Les scénarios courants dans lesquels Auto Scaling contribue à réduire les coûts et l'utilisation de vos applications Spark incluent :

  • un pilote Spark répertoriant un grand nombre de fichiers dans Amazon S3 ou effectuant un chargement alors que les exécuteurs sont inactifs

  • Stages Spark exécutés avec seulement quelques exécuteurs en raison d'un provisionnement excessif

  • des distorsions de données ou une demande de calcul inégale entre les étapes Spark

Prérequis

Auto Scaling n'est disponible que pour la version 3.0 ou ultérieure de AWS Glue. Pour utiliser Auto Scaling, vous pouvez suivre le guide de migration afin de migrer vos tâches existantes vers la version 3.0 ou ultérieure de AWS Glue ou de créer de nouvelles tâches avec la version 3.0 ou ultérieure de AWS Glue.

Auto Scaling est disponible pour les AWS Glue tâches impliquant des travailleurs du type G.1X G.2X G.4X G.8X G.12XG.16X,R.1X,R.2X,R.4X,R.8X,, ou G.025X (uniquement pour les tâches de streaming). DPUs Les standards ne sont pas pris en charge pour Auto Scaling.

Activation d'Auto Scaling dans AWS Glue Studio

Dans l'onglet Détails du Job dans AWS Glue Studio, choisissez le type Spark ou Spark Streaming, et la version Glue ultérieure Glue 3.0 ou ultérieure. Ensuite, une case à cocher apparaîtra sous Type de travailleur.

  • Sélectionnez l'option Automatically scale the number of workers (Mise à l'échelle automatique du nombre d'employés).

  • Configurez le Nombre maximal d'employés pour définir le nombre maximal d'employés pouvant être transférés à l'exécution de la tâche.

Activation et configuration d'Auto Scaling dans AWS Glue Studio.

Activation de l'Auto Scaling à l'aide de la AWS CLI ou du SDK

Pour activer Auto Scaling à partir de la AWS CLI pour l'exécution de votre tâche, exécutez start-job-run la configuration suivante :

{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, and R.8X are supported for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }

Une fois l'exécution de la tâche ETL terminée, vous pouvez également appeler get-job-run pour vérifier l'utilisation réelle des ressources de la tâche exécutée en secondes DPU. Remarque : le nouveau champ n'DPUSecondsapparaîtra que pour vos tâches par lots dans la AWS Glue version 4.0 ou ultérieure activée avec Auto Scaling. Ce champ n'est pas pris en charge pour les tâches de streaming.

$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }

Vous pouvez également configurer des exécutions de tâches avec Auto Scaling à l'aide du kit SDK AWS Glue en suivant la même configuration.

Activer Auto Scaling avec des sessions interactives

Pour activer Auto Scaling lors de la création de AWS Glue jobs avec des sessions interactives, consultez la section Configuration des sessions AWS Glue interactives.

Conseils et considérations

Conseils et points à prendre en compte pour peaufiner AWS Glue Auto Scaling :

  • Si vous n'avez aucune idée de la valeur initiale du nombre maximum de travailleurs, vous pouvez commencer par le calcul approximatif expliqué dans Estimation du AWS Glue DPU. Vous ne devez pas configurer une valeur extrêmement élevée dans le nombre maximum de travailleurs pour de très faibles volumes de données.

  • AWS Glue Auto Scaling configure spark.sql.shuffle.partitions et spark.default.parallelism se base sur le nombre maximum de DPU (calculé en fonction du nombre maximum de travailleurs et du type de travailleur) configurés sur la tâche. Si vous préférez la valeur fixe pour ces configurations, vous pouvez remplacer ces paramètres par les paramètres de tâche suivants :

    • Clé : --conf

    • Value (Valeur) : spark.sql.shuffle.partitions=200 --conf spark.default.parallelism=200

  • Pour les tâches de streaming, par défaut, la mise à l'échelle automatique AWS Glue ne s'effectue pas au sein de microlots et plusieurs microlots sont nécessaires pour lancer la mise à l'échelle automatique. Si vous souhaitez activer la mise à l'échelle automatique dans le cadre de microlots, veuillez fournir--auto-scale-within-microbatch. Pour plus d'informations, consultez la section Référence des paramètres Job.

Surveillance d'Auto Scaling à l'aide CloudWatch des métriques Amazon

Les métriques de l' CloudWatch exécuteur sont disponibles pour vos tâches AWS Glue 3.0 ou ultérieures si vous activez Auto Scaling. Les métriques peuvent être utilisées pour contrôler la demande et l'utilisation optimisée des exécuteurs dans leurs applications Spark activées avec Auto Scaling. Pour de plus amples informations, veuillez consulter Surveillance AWS Glue à l'aide CloudWatch des métriques Amazon.

Vous pouvez également utiliser des indicateurs AWS Glue d'observabilité pour obtenir des informations sur l'utilisation des ressources. Par exemple, grâce à la surveillanceglue.driver.workerUtilization, vous pouvez contrôler la quantité de ressources réellement utilisée avec ou sans mise à l'échelle automatique. Autre exemple, en surveillant glue.driver.skewness.job etglue.driver.skewness.stage, vous pouvez voir à quel point les données sont faussées. Ces informations vous aideront à décider d'activer le dimensionnement automatique et d'affiner les configurations. Pour plus d'informations, consultez la section Surveillance avecSurveillance à l'aide de métriques d'observabilité AWS Glue.

  • colle.driver. ExecutorAllocationManager.exécuteurs. numberAllExecutors

  • colle.driver. ExecutorAllocationManager.exécuteurs. numberMaxNeededExécuteurs

Pour en savoir plus sur ces métriques, consultez Surveillance de la planification des capacités de DPU.

Note

CloudWatch les métriques de l'exécuteur ne sont pas disponibles pour les sessions interactives.

Surveillance d'Auto Scaling à l'aide CloudWatch des métriques Amazon.

Surveillance de l'Auto Scaling avec Amazon CloudWatch Logs

Si vous utilisez des sessions interactives, vous pouvez surveiller le nombre d'exécuteurs en activant Amazon CloudWatch Logs en continu et en recherchant le terme « exécuteur » dans les journaux, ou en utilisant l'interface utilisateur Spark. Pour ce faire, utilisez la %%configure magie pour activer la journalisation continue avecenable auto scaling.

%%configure{ "--enable-continuous-cloudwatch-log": "true", "--enable-auto-scaling": "true" }

Dans les CloudWatch événements Amazon Logs, recherchez « exécuteur » dans les journaux :

Surveillance d'Auto Scaling à l'aide CloudWatch des métriques Amazon.

Surveillance de Auto Scaling avec Spark UI

Lorsqu'Auto Scaling est activé, vous pouvez également surveiller l'ajout et la suppression d'exécuteurs à l'aide de l'augmentation et de la réduction en fonction de la demande de vos tâches AWS Glue à l'aide de la Glue Spark UI. Pour de plus amples informations, veuillez consulter Activation de l'interface utilisateur web Apache Spark pour les tâches AWS Glue.

Lorsque vous utilisez des sessions interactives depuis le bloc-notes Jupyter, vous pouvez exécuter la magie suivante pour activer le dimensionnement automatique avec l'interface utilisateur Spark :

%%configure{ "--enable-auto-scaling": "true", "--enable-continuous-cloudwatch-log": "true" }
Surveillance de Auto Scaling avec Spark UI.

Surveillance de l'utilisation du DPU d'exécution de la tâche Auto Scaling

Vous pouvez utiliser AWS Glue Studio Job run view pour vérifier l'utilisation du DPU de vos tâches Auto Scaling.

  1. Choisissez Monitoring dans le volet AWS Glue Studio de navigation. La page Surveillance apparaît.

  2. Faites défiler la page jusqu'à atteindre le graphique Exécutions de tâche.

  3. Accédez à l'exécution de la tâche qui vous intéresse et faites défiler la page jusqu'à atteindre la colonne « heures » du DPU pour vérifier l'utilisation de l'exécution de la tâche spécifique.

Limites

AWS Gluestreaming Auto Scaling ne prend actuellement pas en charge une DataFrame jointure de streaming avec une statique DataFrame créée en dehors deForEachBatch. Une statique DataFrame créée à l'intérieur du ForEachBatch fonctionnera comme prévu.