

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.

# Implémenter le dimensionnement des applications dans le service géré pour Apache Flink
<a name="how-scaling"></a>

Vous pouvez configurer l’exécution parallèle des tâches et l’allocation de ressources pour le service géré Amazon pour Apache Flink afin d’implémenter la mise à l’échelle. Pour plus d'informations sur la façon dont Apache Flink planifie les instances parallèles de tâches, voir [Parallel Execution dans la documentation d'](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/)Apache Flink.

**Topics**
+ [Configuration du parallélisme des applications et du KPU ParallelismPer](#how-parallelism)
+ [Allouer des unités de traitement Kinesis](#how-scaling-kpus)
+ [Mettez à jour le parallélisme de votre application](#how-scaling-howto)
+ [Utiliser le dimensionnement automatique dans Managed Service pour Apache Flink](how-scaling-auto.md)
+ [Considérations relatives à maxParallelism](#how-scaling-auto-max-parallelism)

## Configuration du parallélisme des applications et du KPU ParallelismPer
<a name="how-parallelism"></a>

Vous configurez l’exécution parallèle des tâches votre application de service géré pour Apache Flink (telles que la lecture depuis une source ou l’exécution d’un opérateur) à l’aide des propriétés [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html) suivantes : 
+ `Parallelism` : utilisez cette propriété pour définir le parallélisme par défaut de l’application Apache Flink. Tous les opérateurs, sources et récepteurs s’exécutent avec ce parallélisme, sauf s’ils sont remplacés dans le code de l’application. La valeur par défaut est `1`, et la valeur maximale est `256`.
+ `ParallelismPerKPU` : utilisez cette propriété pour définir le nombre de tâches parallèles qui peuvent être planifiées par unité de traitement Kinesis (KPU) de votre application. La valeur par défaut est `1`, et la valeur maximale est `8`. Pour les applications comportant des opérations de blocage (par exemple, des E/S), une valeur plus élevée de `ParallelismPerKPU` entraîne une utilisation complète des ressources KPU.

**Note**  
La limite pour `Parallelism` est égale au nombre de `ParallelismPerKPU` fois la limite pour KPUs (64 par défaut). La KPUs limite peut être augmentée en demandant une augmentation de limite. Pour des instructions pour demander une augmentation de cette limite, consultez « Pour demander une augmentation de limite » dans [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

Pour plus d'informations sur la définition du parallélisme des tâches pour un opérateur spécifique, voir [Configuration du parallélisme : opérateur dans la](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#operator-level) documentation d'Apache Flink.

## Allouer des unités de traitement Kinesis
<a name="how-scaling-kpus"></a>

Le service géré pour Apache Flink fournit la capacité en tant que KPUs. qUne seule unité KPU vous fournit 1 vCPU et 4 Go de mémoire. Pour chaque unité KPU allouée, 50 Go de stockage des applications en cours d’exécution sont également fournis. 

Le service géré pour Apache Flink calcule KPUs les éléments nécessaires pour exécuter votre application à l'aide des `ParallelismPerKPU` propriétés `Parallelism` et, comme suit :

```
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
```

Le service géré pour Apache Flink fournit rapidement des ressources à vos applications en réponse aux pics de débit ou d’activité de traitement. Il supprime progressivement les ressources de votre application une fois le pic d’activité passé. Pour désactiver l’allocation automatique des ressources, définissez la valeur `AutoScalingEnabled` sur `false`, comme décrit plus loin dans [Mettez à jour le parallélisme de votre application](#how-scaling-howto). 

La limite par défaut KPUs pour votre application est de 64. Pour des instructions pour demander une augmentation de cette limite, consultez « Pour demander une augmentation de limite » dans [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

**Note**  
Un KPU supplémentaire est facturé à des fins d’orchestration. Pour plus d’informations, consultez [Tarification du service géré pour Apache Flink](https://aws.amazon.com/kinesis/data-analytics/pricing/).

## Mettez à jour le parallélisme de votre application
<a name="how-scaling-howto"></a>

Cette section contient des exemples de demande d’action d’API qui définissent le parallélisme d’une application. Pour plus d’exemples et d’instructions sur l’utilisation de blocs de requête avec des actions d’API, consultez [Exemple de code de service géré pour l'API Apache Flink](api-examples.md).

L’exemple de demande d’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) suivant définit le parallélisme lorsque vous créez une application :

```
{
   "ApplicationName": "string",
   "RuntimeEnvironment":"FLINK-1_18",
   "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole",
   "ApplicationConfiguration": { 
      "ApplicationCodeConfiguration":{
      "CodeContent":{
         "S3ContentLocation":{
            "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
            "FileKey":"myflink.jar",
            "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
            }
         },
      "CodeContentType":"ZIPFILE"
   },   
      "FlinkApplicationConfiguration": { 
         "ParallelismConfiguration": { 
            "AutoScalingEnabled": "true",
            "ConfigurationType": "CUSTOM",
            "Parallelism": 4,
            "ParallelismPerKPU": 4
         }
      }
   }
}
```

L’exemple de demande d’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) suivant définit le parallélisme pour une application existante :

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "ParallelismConfigurationUpdate": { 
            "AutoScalingEnabledUpdate": "true",
            "ConfigurationTypeUpdate": "CUSTOM",
            "ParallelismPerKPUUpdate": 4,
            "ParallelismUpdate": 4
         }
      }
   }
}
```

L’exemple de demande d’action [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) suivant désactive le parallélisme pour une application existante :

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "ParallelismConfigurationUpdate": { 
            "AutoScalingEnabledUpdate": "false"
         }
      }
   }
}
```

# Utiliser le dimensionnement automatique dans Managed Service pour Apache Flink
<a name="how-scaling-auto"></a>

Le service géré pour Apache Flink adapte de manière élastique le parallélisme de votre application pour s’adapter au débit de données de votre source et à la complexité de votre opérateur dans la plupart des scénarios. La mise à l’échelle automatique est activée par défaut. Le service géré pour Apache Flink surveille l’utilisation des ressources (processeur) de votre application et adapte de manière élastique le parallélisme de votre application à la hausse ou à la baisse en conséquence :
+ Votre application augmente (augmente le parallélisme) si le maximum CloudWatch métrique `containerCPUUtilization` est supérieur à 75 % ou plus pendant 15 minutes. Cela signifie que l'`ScaleUp`action est lancée lorsqu'il existe 15 points de données consécutifs avec une période d'une minute égale ou supérieure à 75 %. Une `ScaleUp` action double la valeur `CurrentParallelism` de votre application. `ParallelismPerKPU`n'est pas modifié. En conséquence, le nombre de personnes allouées double KPUs également. 
+ Votre application réduit (diminue le parallélisme) lorsque l’utilisation de votre processeur reste inférieure à 10 % pendant six heures. Cela signifie que l'`ScaleDown`action est lancée lorsqu'il existe 360 points de données consécutifs avec une période d'une minute inférieure à 10 %. Une `ScaleDown` action réduit de moitié (arrondi vers le haut) le parallélisme de l'application. `ParallelismPerKPU`n'est pas modifié, et le nombre de personnes allouées est KPUs également réduit de moitié (arrondi au chiffre supérieur). 

**Note**  
Une période maximale de `containerCPUUtilization` plus d'une minute peut être référencée pour trouver la corrélation avec un point de données utilisé pour l'action Scaling, mais il n'est pas nécessaire de refléter le moment exact où l'action est initialisée.

Le service géré pour Apache Flink ne réduira pas la valeur `CurrentParallelism` de votre application à un niveau inférieur au paramètre `Parallelism` de votre application.

Lorsque le service géré pour Apache Flink met à l’échelle votre application, elle passe à l’état `AUTOSCALING`. Vous pouvez vérifier l'état actuel de votre candidature à l'aide [ ListApplications](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_ListApplications.html)des actions [ DescribeApplication](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_DescribeApplication.html)ou. Pendant que le service fait évoluer votre application, la seule action d'API valide que vous pouvez utiliser est celle [ StopApplication](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_ListApplications.html)dont le `Force` paramètre est défini sur`true`.

Vous pouvez utiliser la propriété `AutoScalingEnabled` (partie de [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_FlinkApplicationConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_FlinkApplicationConfiguration.html)) pour activer ou désactiver le comportement de l’autoscaling. Votre AWS compte est débité pour KPUs les prestations du service géré pour Apache Flink, qui dépendent de votre application `parallelism` et de vos `parallelismPerKPU` paramètres. Un pic d’activité augmente les coûts de votre service géré pour Apache Flink.

Pour obtenir des informations sur la tarification, consultez [Tarification du service géré pour Apache Flink](https://aws.amazon.com/kinesis/data-analytics/pricing/). 

Notez les informations suivantes à propos de la mise à l’échelle de l’application :
+ La mise à l’échelle automatique est activée par défaut.
+ La mise à l’échelle ne s’applique pas aux blocs-notes Studio. Toutefois, si vous déployez un bloc-notes Studio en tant qu’application à état durable, la mise à l’échelle s’appliquera à l’application déployée.
+ La limite par défaut de votre application est de 64 KPUs. Pour de plus amples informations, veuillez consulter [Service géré pour Apache Flink et quota de blocs-notes Studio](limits.md).
+ Lorsque la mise à l’échelle automatique met à jour le parallélisme des applications, celles-ci subissent des interruptions. Pour éviter ces interruptions, procédez comme suit :
  + Désactiver la mise à l’échelle automatique
  + Configurez `parallelism` et utilisez l'[UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)action `parallelismPerKPU` de votre application. Pour plus d'informations sur la définition des paramètres de parallélisme de votre application, consultez. [Mettez à jour le parallélisme de votre application](how-scaling.md#how-scaling-howto)
  + Surveillez régulièrement l’utilisation des ressources de votre application pour vérifier qu’elle dispose des paramètres de parallélisme adaptés à sa charge de travail. Pour obtenir des informations sur la surveillance de l’allocation des ressources, consultez [Métriques et dimensions dans le service géré pour Apache Flink](metrics-dimensions.md).

## Implémenter un autoscaling personnalisé
<a name="how-scaling-custom-autoscaling"></a>

Si vous souhaitez un contrôle plus précis de la mise à l'échelle automatique ou si vous souhaitez utiliser d'autres mesures de déclenchement`containerCPUUtilization`, vous pouvez utiliser cet exemple : 
+ [AutoScaling](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/infrastructure/AutoScaling)

  Cet exemple montre comment faire évoluer votre service géré pour l'application Apache Flink à l'aide d'une CloudWatch métrique différente de celle de l'application Apache Flink, y compris les métriques d'Amazon MSK et d'Amazon Kinesis Data Streams, utilisées comme sources ou récepteurs.

Pour plus d'informations, voir [Surveillance améliorée et dimensionnement automatique pour Apache Flink](https://aws.amazon.com/blogs/big-data/enhanced-monitoring-and-automatic-scaling-for-apache-flink/).

## Implémenter l'autoscaling planifié
<a name="how-scaling-scheduled-autoscaling"></a>

Si votre charge de travail suit un profil prévisible au fil du temps, vous préférerez peut-être dimensionner votre application Apache Flink de manière préventive. Cela permet de faire évoluer votre application à une heure planifiée, par opposition à une mise à l'échelle réactive basée sur une métrique. Pour configurer le dimensionnement à la hausse ou à la baisse à des heures fixes de la journée, vous pouvez utiliser cet exemple :
+ [ScheduledScaling](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/infrastructure/ScheduledScaling)

## Considérations relatives à maxParallelism
<a name="how-scaling-auto-max-parallelism"></a>

Le parallélisme maximal qu'une tâche Flink peut ajuster est limité *au minimum* pour `maxParallelism` tous les opérateurs de la tâche. Par exemple, si vous avez une tâche simple avec uniquement une source et un récepteur, et que la source a 16 et le récepteur 8, l'application ne peut pas évoluer au-delà du parallélisme de 8. `maxParallelism`

Pour savoir comment la valeur par défaut `maxParallelism` d'un opérateur est calculée et comment la remplacer, reportez-vous à la section [Définition du parallélisme maximal dans la](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism) documentation d'Apache Flink.

En règle générale, sachez que si vous ne définissez `maxParallelism` aucun opérateur et que vous démarrez votre application avec un parallélisme inférieur ou égal à 128, tous les opérateurs auront un `maxParallelism` de 128.

**Note**  
Le parallélisme maximal de la tâche est la limite supérieure du parallélisme pour faire évoluer votre application en conservant son état.   
Si vous modifiez `maxParallelism` une application existante, celle-ci ne pourra pas redémarrer à partir d'une capture d'écran précédente prise avec l'ancienne`maxParallelism`. Vous ne pouvez redémarrer l'application que sans capture d'écran.   
Si vous envisagez de dimensionner votre application à un parallélisme supérieur à 128, vous devez le définir explicitement `maxParallelism` dans votre application.
+ La logique de mise à l'échelle automatique empêchera le dimensionnement d'une tâche Flink jusqu'à un parallélisme supérieur au parallélisme maximal de la tâche.
+ Si vous utilisez un dimensionnement automatique personnalisé ou un dimensionnement planifié, configurez-les de manière à ce qu'ils ne dépassent pas le parallélisme maximal de la tâche.
+ Si vous redimensionnez manuellement votre application au-delà du parallélisme maximal, l'application ne démarre pas.