Autoscaling du streaming AWS Glue
Les tâches ETL AWS Glue en streaming consomment en permanence des données provenant de sources de streaming, nettoient et transforment les données à la volée et les rendent disponibles pour analyse. En surveillant chaque étape de l’exécution de la tâche, l’autoscaling AWS Glue peut désactiver les travailleurs lorsqu’ils sont inactifs ou en ajouter d’autres si un traitement parallèle supplémentaire est possible.
Les sections suivantes fournissent des informations sur l’autoscaling du streaming AWS Glue.
Activation d’Auto Scaling dans AWS Glue Studio
Dans l'onglet Job details (Détails de la tâche) de AWS Glue Studio, choisissez le type Spark ou Spark Streaming, et dans le champ Glue version (Version de Glue), choisissez Glue 3.0 ou Glue 4.0. Ensuite, une case à cocher apparaît sous le Worker type (Type d'employé).
-
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.
Activer Auto Scaling avec la CLI AWS ou le kit SDK
Pour activer Auto Scaling à partir de la CLI AWS pour votre tâche, exécutez start-job-run selon 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 DPUSeconds n'apparaît que pour les tâches par lots exécutées sur la version 3.0 ou ultérieure de AWS Glue et sur laquelle Auto Scaling est activé. 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.
Fonctionnement
Mise à l’échelle dans les microlots
L’exemple suivant est utilisé pour décrire le fonctionnement de l’autoscaling.
-
Vous avez une tâche AWS Glue qui commence avec 50 DPU.
-
L’autoscaling est activé.
Dans cet exemple, AWS Glue examine la métrique « batchProcessingTimeInMs » pour quelques microlots et détermine si vos tâches se terminent dans les limites de la fenêtre que vous avez définie. Si vos tâches sont terminées plus tôt et en fonction de la rapidité avec laquelle elles seront terminées, AWS Glue pourra se réduire. Cette métrique, tracée avec « numberAllExecutors », peut être surveillée dans Amazon CloudWatch pour voir comment fonctionne l’autoscaling.
Le nombre de programmes d’exécution augmente ou se réduit de façon exponentielle uniquement après la fin de chaque microlot. Comme vous pouvez le constater dans le journal de surveillance Amazon CloudWatch, AWS Glue examine le nombre de programmes d’exécution nécessaires (ligne orange) et met à l’échelle les programmes d’exécution (ligne bleue) pour qu’ils correspondent automatiquement à cette valeur.
Une fois qu’AWS Glue réduit le nombre de programmes d’exécution et constate que les volumes de données augmentent, ce qui augmente le temps de traitement par microlots, AWS Glue augmentera à 50 DPU, soit la limite supérieure spécifiée.
Mise à l’échelle au sein de microlots
Dans l’exemple ci-dessus, le système surveille quelques microlots terminés pour décider de les augmenter ou de les réduire. Les fenêtres plus longues nécessitent un autoscaling pour réagir plus rapidement au sein du microlot, au lieu d’attendre quelques microlots. Dans ces cas, vous pouvez utiliser une configuration supplémentaire --auto-scaIe-within-microbatch pour true. Vous pouvez l’ajouter aux propriétés de la tâche AWS Glue dans AWS Glue Studio comme indiqué ci-dessous.