Surveillance de la planification des capacités de DPU
Vous pouvez utiliser des métriques de tâche dans AWS Glue pour évaluer le nombre d'unités de traitement de données (DPU) pouvant être utilisées pour monter en charge une tâche AWS Glue.
Note
Cette page s'applique uniquement à AWS Glue versions 0.9 et 1.0. Les versions ultérieures de AWS Glue contiennent des fonctions de réduction des coûts qui introduisent des considérations supplémentaires lors de la planification de la capacité.
Rubriques
Code profilé
Le script suivant lit une partition Amazon Simple Storage Service (Amazon S3) contenant 428 fichiers JSON compressés avec gzip. Le script applique un mappage pour modifier les noms de champs, les convertit et les écrit dans Amazon S3 au format Apache Parquet. Vous allouez 10 DPU par défaut et exécutez cette tâche.
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json") applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec]) datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")
Voir les métriques profilées sur la console AWS Glue
Exécution de tâche 1 : dans cette exécution de tâche, nous vous montrons comment déterminer si le cluster comprend des DPU sous‑alloués. La fonctionnalité d'exécution de tâches dans AWS Glue indique le nombre total de programmes d'exécution actifs en cours d'exécution, le nombre d'étapes terminées et le nombre maximum de programmes d'exécution nécessaires.
Le nombre maximum de programmes d'exécution nécessaires est calculé en ajoutant le nombre total de tâches en cours d'exécution et de tâches en attente, puis en divisant ce nombre par le nombre de tâches par programme d'exécution. Ce résultat est une mesure du nombre total d'exécuteurs requises pour satisfaire la charge du moment.
En revanche, le nombre de programmes d'exécution actifs en cours d'exécution mesure le nombre de programmes d'exécution qui exécutent des tâches Apache Spark. À mesure que la tâche progresse, le nombre maximum de programmes d'exécution nécessaires peut varier et baisse généralement vers la fin de la tâche à mesure que diminue la file d'attente de tâches en attente.
La ligne rouge horizontale du graphique suivant montre le nombre maximum de programmes d'exécution alloués, ce qui dépend du nombre de DPU alloués pour la tâche. Dans ce cas, vous allouez 10 DPU à l'exécution de tâche. Une DPU est réservée à la gestion. Neuf DPU exécutent deux programmes d’exécution et un programme d'exécution est réservé au pilote Spark. Le pilote Spark s'exécute dans l'application principale. Par conséquent, le nombre maximum de programmes d'exécution alloués est de 2 x 9 - 1 = 17 programmes d'exécution.
Comme le montre le graphique, le nombre maximum de programmes d'exécution nécessaires commence à 107 au début de la tâche, alors que le nombre de programmes d'exécution actifs reste 17. C'est le même que le nombre maximum de programmes d'exécution alloués pour 10 DPU. Le ratio entre le nombre maximum de programmes d'exécution nécessaires et le nombre maximum de programmes d'exécution alloués (en ajoutant 1 à chacun des pilotes Spark) donne le facteur sous-alloué : 108/18 = 6x. Vous pouvez mettre en service 6 (provenant du ratio de mise en service) * 9 (capacité DPU actuelle - 1) +1 DPU = 55 DPU pour monter la tâche en charge afin de l'exécuter avec un maximum de parallélisme et terminer plus rapidement.
La console AWS Glue affiche le détail des métriques des tâches sous la forme d'une ligne statique qui représente le nombre maximal de programmes d'exécution alloués au départ. Pour ces métriques, la console calcule le nombre maximum de programme d'exécution alloués à partir de la définition de la tâche. En revanche pour les métriques d'exécution d'une tâche, la console calcule le nombre maximum de programmes d'exécution alloués à partir de la configuration de l'exécution de la tâche, notamment les DPU allouées à l'exécution. Pour afficher les métriques d'une exécution de tâche spécifique, sélectionnez l'exécution et choisissez View run metrics (Afficher les métriques de l'exécution).
Si l'on regarde les octets Amazon S3 lus et écrits, on remarque que la tâche prend six minutes complètes pour diffuser les données à partir d’Amazon S3 et les écrire en parallèle. Tous les noyaux sur les DPU allouées lisent et écrivent sur Amazon S3. Le nombre maximum de programmes d'exécution nécessaires (107) correspond également au nombre de fichiers dans le chemin d'accès d'entrée Amazon S3 (428). Chaque programme d'exécution peut lancer quatre tâches Spark pour traiter quatre fichiers d'entrée (JSON compressées avec gzip).
Déterminer la capacité DPU optimale
Selon les résultats de la précédente tâche, vous pouvez augmenter le nombre total de DPU allouées à 55, et voir comment la tâche s'exécute. La tâche se termine en moins de trois minutes, soit la moitié du temps auparavant nécessaire. La montée en charge de la tâche n'est pas linéaire dans ce cas, car il s'agit d'une tâche d'exécution courte. Les tâches avec des tâches de longue durée ou un grand nombre de tâches (un grand nombre maximum de programmes d'exécution) bénéficient d'une accélération presque linéaire des performances de montée en charge de DPU.
Comme le montre l'image ci-dessus, le nombre total de programmes d'exécution actifs atteint le nombre maximum de programmes d'exécution alloués (107). De même, le nombre maximum de programmes d'exécution nécessaires ne dépasse jamais le nombre maximum de programmes d'exécution alloués. Le nombre maximum de programmes d'exécution nécessaires est calculé à partir du nombre de tâches en cours d'exécution et en attente, il doit donc être inférieur au nombre de programmes d'exécution actifs. Ceci est dû au fait que des programmes d'exécution peuvent être partiellement ou complètement inactifs pour une courte période de temps et ne sont pas encore démagnétisés.
Cette exécution de tâche utilise 6 fois plus de programmes d'exécution pour lire et écrire en parallèle depuis Amazon S3. Par conséquent, cette exécution de tâche utilise plus de bande passante Amazon S3 pour les lectures et les écritures, et se termine plus rapidement.
Identifier des DPU sur-allouées
Ensuite, vous pouvez déterminer si la montée en charge de la tâche avec 100 DPU (99 x 2 = 198 programmes d'exécution) permet de plus monter en charge. Comme le montre le graphique suivant, la tâche se termine toujours après trois minutes. De même, la tâche ne monte pas en charge au-delà de 107 programmes d'exécution (configuration de 55 DPU) et les autres 91 programmes d'exécution sont sur-alloués et ne sont pas du tout utilisés. Cela montre qu'augmenter le nombre de DPU n'améliore pas toujours les performances, comme le prouve le nombre maximum de programmes d'exécution nécessaires.
Comparer des différences de temps
Les trois exécutions de tâches indiquées dans le tableau suivant résument les durées d'exécution des tâches pour 10 DPU, 55 DPU et 100 DPU. Vous pouvez trouver la capacité de DPU pour améliorer la durée d'exécution de la tâche en utilisant l'estimation que vous avez réalisée en surveillant la première exécution de tâche.
| ID de tâche | Nombre de DPU | Durée d’exécution |
|---|---|---|
| jr_c894524c8ef5048a4d9... | 10 | 6 min. |
| jr_1a466cf2575e7ffe6856... | 55 | 3 min. |
| jr_34fa1ed4c6aa9ff0a814... | 100 | 3 min. |