Outil de mise à l’échelle automatique Flink - 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.

Outil de mise à l’échelle automatique Flink

La version 6.15.0 et les versions ultérieures d’Amazon EMR prennent en charge l’outil de mise à l’échelle automatique Flink. La fonctionnalité de mise à l’échelle automatique des tâches collecte les métriques issues de l’exécution des tâches de streaming Flink et met à l’échelle automatiquement les vertex de chaque tâche. Cela réduit la contre-pression et répond à l’objectif d’utilisation que vous avez défini.

Pour plus d’informations, voir la rubrique Outil de mise à l’échelle automatique de la documentation de l’opérateur Apache Flink Kubernetes.

  • La version 6.15.0 et les versions ultérieures d’Amazon EMR prennent en charge l’outil de mise à l’échelle automatique Flink.

  • L’outil de mise à l’échelle automatique Flink est pris en charge uniquement pour les tâches de streaming.

  • Seul le planificateur adaptatif est pris en charge. Le planificateur par défaut n’est pas pris en charge.

  • Nous recommandons d’activer la mise à l’échelle de cluster pour permettre une mise à disposition de ressources dynamique. La mise à l’échelle gérée par Amazon EMR est préférable, car l’évaluation des métriques est effectuée toutes les 5 à 10 secondes. À cet intervalle, votre cluster peut s’adapter plus facilement à l’évolution des ressources de cluster requises.

Pour activer l’outil de mise à l’échelle automatique Flink lorsque vous créez un cluster Amazon EMR sur EC2, procédez comme suit.

  1. Créez un cluster EMR depuis la console Amazon EMR :

    1. Choisissez Amazon EMR version emr-6.15.0 ou ultérieure. Sélectionnez l’offre d’applications Flink, puis toutes les autres applications que vous souhaitez inclure dans votre cluster.

      Application bundle options for Amazon EMRcluster, with Flink highlighted and selected.
    2. Dans Mise à l’échelle et provisionnement du cluster, sélectionnez l’option Utiliser la mise à l’échelle gérée par EMR.

      Cluster scaling options: manual, EMR-managed (selected), or custom automatic scaling.
  2. Dans la section Paramètres du logiciel, entrez la configuration suivante pour activer l’outil de mise à l’échelle automatique Flink. Pour les scénarios de test, définissez l’intervalle de décision, l’intervalle entre les fenêtres de mesures et l’intervalle de stabilisation sur une valeur inférieure afin que la tâche prenne immédiatement une décision de mise à l’échelle et faciliter ainsi la vérification.

    [ { "Classification": "flink-conf", "Properties": { "job.autoscaler.enabled": "true", "jobmanager.scheduler": "adaptive", "job.autoscaler.stabilization.interval": "60s", "job.autoscaler.metrics.window": "60s", "job.autoscaler.decision.interval": "10s", "job.autoscaler.debug.logs.interval": "60s" } } ]
  3. Sélectionnez ou configurez les autres paramètres selon vos préférences, puis créez le cluster compatible avec l’outil de mise à l’échelle automatique Flink.

Cette section couvre la plupart des configurations que vous pouvez modifier en fonction de vos besoins spécifiques.

Note

Avec des configurations temporelles telles que les paramètres time, interval et window, l’unité par défaut lorsqu’aucune unité n’est spécifiée est la milliseconde. Une valeur de 30 sans suffixe est donc égale à 30 millisecondes. Pour les autres unités de temps, incluez le suffixe approprié de s pour les secondes, m pour les minutes ou h pour les heures.

L’outil de mise à l’échelle automatique récupère les métriques au niveau des vertex de la tâche pour chaque intervalle de temps configurable, les convertit en variables d’échelle, estime le parallélisme des nouveaux vertex de la tâche et le recommande au planificateur de tâches. Les métriques ne sont collectées qu’à l’issue du redémarrage de la tâche et de l’intervalle de stabilisation du cluster.

Clé de configuration Valeur par défaut Description Exemples de valeur
job.autoscaler.enabled false Activez la mise à l’échelle automatique sur votre cluster Flink. true, false
job.autoscaler.decision.interval 60s Intervalle de décision de l’outil de mise à l’échelle automatique. 30 (l’unité par défaut est la milliseconde), 5m, 1h
job.autoscaler.restart.time 3m Temps de redémarrage prévu à utiliser jusqu’à ce que l’opérateur puisse le déterminer de manière fiable à partir de l’historique. 30 (l’unité par défaut est la milliseconde), 5m, 1h
job.autoscaler.stabilization.interval 300s Période de stabilisation au cours de laquelle aucune nouvelle mise à l’échelle ne sera exécutée. 30 (l’unité par défaut est la milliseconde), 5m, 1h
job.autoscaler.debug.logs.interval 300s Intervalle entre les journaux de débogage de l’outil de mise à l’échelle automatique. 30 (l’unité par défaut est la milliseconde), 5m, 1h

L’outil de mise à l’échelle automatique récupère les métriques et les agrège sur une fenêtre temporelle coulissante. Les métriques sont alors évaluées dans le cadre de décisions de mise à l’échelle. L’historique des décisions de mise à l’échelle pour chaque vertex de tâche est utilisé pour estimer le nouveau parallélisme. Les métriques présentent une date d’expiration basée sur l’ancienneté et une taille d’historique (1 au minimum).

Clé de configuration Valeur par défaut Description Exemples de valeur
job.autoscaler.metrics.window 600s Scaling metrics aggregation window size. 30 (l’unité par défaut est la milliseconde), 5m, 1h
job.autoscaler.history.max.count 3 Nombre maximal de décisions de mise à l’échelle passées à conserver par vertex. 1 sur Integer.MAX_VALUE
job.autoscaler.history.max.age 24h Nombre minimal de décisions de mise à l’échelle passées à conserver par vertex. 30 (l’unité par défaut est la milliseconde), 5m, 1h

Le parallélisme de chaque vertex de tâche est modifié en fonction de l’utilisation de la cible et est limité par les limites minimale et maximale de parallélisme. Nous vous déconseillons de définir une cible d’utilisation proche de 100 % (c’est-à-dire une valeur de 1). La limite d’utilisation joue le rôle de tampon pour gérer les fluctuations de charge intermédiaires.

Clé de configuration Valeur par défaut Description Exemples de valeur
job.autoscaler.target.utilization 0.7 Utilisation des vertex cibles. 0 - 1
job.autoscaler.target.utilization.boundary 0.4 Limite d’utilisation des vertex cibles. La mise à l’échelle ne sera pas effectuée si le taux de traitement actuel est compris entre [target_rate / (target_utilization - boundary) et (target_rate / (target_utilization + boundary)]. 0 - 1
job.autoscaler.vertex.min-parallelism 1 Parallélisme minimal que l’outil de mise à l’échelle automatique peut utiliser. 0 - 200
job.autoscaler.vertex.max-parallelism 200 Parallélisme maximal que l’outil de mise à l’échelle automatique peut utiliser. Notez que l’outil de mise à l’échelle automatique ignore cette limite si elle est supérieure au parallélisme maximal configuré dans la configuration Flink ou directement sur chaque opérateur. 0 - 200

Le vertex de la tâche requiert des ressources supplémentaires pour gérer les événements en attente, ou backlogs, qui s’accumulent pendant le délai de mise à l’échelle. C’est ce que l’on appelle également la durée de catch-up. Si le délai de traitement du backlog dépasse la lag -threshold valeur configurée, l’utilisation cible du vertex de la tâche augmente jusqu’au niveau maximum. Cela permet d’éviter les opérations de mise à l’échelle inutiles pendant le traitement du backlog.

Clé de configuration Valeur par défaut Description Exemples de valeur
job.autoscaler.backlog-processing.lag-threshold 5m Seuil de retard qui évitera les mises à l’échelle inutiles tout en supprimant les messages en attente responsables du retard. 30 (l’unité par défaut est la milliseconde), 5m, 1h
job.autoscaler.catch-up.duration 15m Durée cible pour le traitement complet de tout backlog après une opération de mise à l’échelle. Définissez cette valeur sur 0 pour désactiver la mise à l’échelle basée sur le backlog. 30 (l’unité par défaut est la milliseconde), 5m, 1h

Aucune opération de réduction n’est effectuée par l’outil de mise à l’échelle automatique immédiatement après une opération de mise à l’échelle pendant le délai de grâce. Cela permet d’éviter tout cycle inutile d’opérations successives d’augmentation ou de réduction d’échelle provoquées par des fluctuations de charge temporaires.

Nous pouvons utiliser le ratio de réduction d’échelle pour réduire progressivement le parallélisme et libérer des ressources pour faire face à des pics de charge temporaires. Cela permet également d’éviter des opérations d’augmentation d’échelle mineures et inutiles après une opération de réduction majeure.

Nous pouvons détecter une opération de mise à l’échelle inefficace sur la base de l’historique des décisions d’augmentation d’échelle des vertex de tâches passées afin d’empêcher toute nouvelle modification du parallélisme.

Clé de configuration Valeur par défaut Description Exemples de valeur
job.autoscaler.scale-up.grace-period 1h Durée pendant laquelle aucune réduction d’échelle d’un vertex n’est autorisée après l’augmentation d’échelle de ce vertex. 30 (l’unité par défaut est la milliseconde), 5m, 1h
job.autoscaler.scale-down.max-factor 0.6 Facteur maximal de réduction d’échelle. Une valeur égale à 1 signifie qu’aucune limite de réduction d’échelle n’est définie ; 0.6 indique que seule une réduction d’échelle de 60  % du parallélisme d’origine peut être appliquée à la tâche. 0 - 1
job.autoscaler.scale-up.max-factor 100000. Ratio maximal d’augmentation d’échelle. Une valeur de 2.0 signifie que seule une augmentation d’échelle de 200 % du parallélisme actuel peut être appliquée à la tâche. 0 - Integer.MAX_VALUE
job.autoscaler.scaling.effectiveness.detection.enabled false Permet d’activer la détection des opérations de mise à l’échelle inefficaces et d’autoriser le blocage de nouvelles mises à l’échelle par l’outil de mise à l’échelle automatique. true, false