Mise hors service progressive des instances Spot avec Flink sur Amazon EMR sur EKS - Amazon EMR

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.

Mise hors service progressive des instances Spot avec Flink sur Amazon EMR sur EKS

L’utilisation de Flink avec Amazon EMR sur EKS peut améliorer le temps de redémarrage des tâches lors des opérations de récupération ou de mise à l’échelle des tâches.

La version 6.15.0 et les versions ultérieures d’Amazon EMR prennent en charge la mise hors service progressive des Task Managers sur les instances Spot dans Amazon EMR sur EKS avec Apache Flink. Dans le cadre de cette fonctionnalité, Amazon EMR sur EKS avec Flink fournit les fonctionnalités suivantes :

  • Point de ust-in-time contrôle J — Les tâches de streaming Flink peuvent répondre à une interruption d'une instance Spot, effectuer un point de contrôle just-in-time (JIT) des tâches en cours d'exécution et empêcher la planification de tâches supplémentaires sur ces instances Spot. Les points de contrôle juste à temps sont pris en charge avec le planificateur par défaut et le planificateur adaptatif.

  • Mécanisme de redémarrage combiné : un mécanisme de redémarrage combiné tente de redémarrer la tâche une fois que le parallélisme des ressources cibles est atteint ou que la fenêtre actuellement configurée est terminée. Cela permet également d’éviter des redémarrages successifs susceptibles d’être provoqués par l’arrêt de plusieurs instances Spot. Le mécanisme de redémarrage combiné est uniquement disponible avec le planificateur adaptatif.

Ces fonctionnalités offrent les avantages suivants :

  • Vous pouvez tirer parti des instances Spot pour exécuter des Task Managers et réduire les dépenses liées aux clusters.

  • L’amélioration de la réactivité du Task Manager sur les instances Spot se traduit par une résilience accrue et une planification des tâches plus efficace.

  • Le temps de fonctionnement de vos tâches Flink sera plus élevé, car les redémarrages après l’arrêt d’une instance Spot seront moins nombreux.

Prenons l’exemple suivant : vous provisionnez un cluster Amazon EMR sur EKS exécutant Apache Flink, et vous spécifiez des nœuds à la demande pour le Job Manager et des nœuds d’instance Spot pour le Task Manager. Deux minutes avant l’arrêt, le Task Manager reçoit un avis d’interruption.

Dans ce scénario, le Job Manager gère le signal d’interruption d’instance Spot, empêche la planification de tâches supplémentaires sur l’instance Spot et crée un point de contrôle juste à temps pour la tâche de streaming.

Le Job Manager ne redémarre le graphe des tâches que lorsque les nouvelles ressources disponibles sont suffisantes pour permettre le parallélisme des tâches actuelles dans la fenêtre d’intervalle de redémarrage actuelle. L’intervalle de fenêtre de redémarrage est déterminée en fonction du temps nécessaire au remplacement de l’instance Spot, à la création de nouveaux pods du Task Manager et à l’enregistrement auprès du Job Manager.

Pour utiliser la mise hors service progressive, créez et exécutez une tâche de streaming sur un cluster Amazon EMR on EKS exécutant Apache Flink. Activez le planificateur adaptatif et les Task Managers planifiés sur au moins une instance Spot, comme illustré dans l’exemple suivant. Vous devez utiliser des nœuds à la demande pour le Job Manager, et vous pouvez utiliser des nœuds à la demande pour les Task Managers à condition qu’il existe également au moins une instance Spot.

apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: deployment_name spec: flinkVersion: v1_17 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" cluster.taskmanager.graceful-decommission.enabled: "true" execution.checkpointing.interval: "240s" jobmanager.adaptive-scheduler.combined-restart.enabled: "true" jobmanager.adaptive-scheduler.combined-restart.window-interval : "1m" serviceAccount: flink jobManager: resource: memory: "2048m" cpu: 1 nodeSelector: 'eks.amazonaws.com/capacityType': 'ON_DEMAND' taskManager: resource: memory: "2048m" cpu: 1 nodeSelector: 'eks.amazonaws.com/capacityType': 'SPOT' job: jarURI: flink_job_jar_path

Cette section couvre la plupart des configurations que vous pouvez spécifier pour vos besoins de mise hors service.

Clé Description Valeur par défaut Valeurs acceptables
cluster.taskmanager.graceful-decommission.enabled

Active la mise hors service progressive du Task Manager.

true true, false
jobmanager.adaptive-scheduler.combined-restart.enabled

Active le mécanisme de redémarrage combiné dans le planificateur adaptatif.

false true, false
jobmanager.adaptive-scheduler.combined-restart.window-interval

Intervalle de fenêtre de redémarrage combiné pour l’exécution de redémarrages combinés de la tâche. Un entier sans unité est interprété comme une milliseconde.

1m Exemples : 30, 60s, 3m, 1h