Implémenter le dimensionnement des applications dans le service géré pour Apache Flink - Service géré pour Apache Flink

Le service géré Amazon pour Apache Flink était auparavant connu sous le nom d’Amazon Kinesis Data Analytics pour Apache Flink.

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

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'Apache Flink.

Configurer le parallélisme des applications et ParallelismPer KPU

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 ParallelismConfiguration 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 KPU ressources.

Note

La limite pour Parallelism est égale au nombre de ParallelismPerKPU fois la limite pour KPUs (dont la valeur par défaut est 64). 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.

Pour plus d'informations sur la définition du parallélisme des tâches pour un opérateur spécifique, consultez la section Configuration du parallélisme : opérateur dans la documentation d'Apache Flink.

Allouer des unités de traitement Kinesis

Le service géré pour Apache Flink fournit la capacité en tant queKPUs. Un single vous KPU fournit 1 V CPU et 4 Go de mémoire. Pour chaque KPU allocation, 50 Go de stockage d'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.

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.

Note

Un supplément KPU est facturé à des fins d'orchestration. Pour plus d’informations, consultez Tarification du service géré pour Apache Flink.

Mettez à jour le parallélisme de votre application

Cette section contient des exemples de demandes d'APIactions qui définissent le parallélisme d'une application. Pour plus d'exemples et d'instructions sur la façon d'utiliser des blocs de requêtes avec API des actions, consultezAPIExemple de code de service géré pour Apache Flink.

L’exemple de demande d’action CreateApplication 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 UpdateApplication 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 UpdateApplication suivant désactive le parallélisme pour une application existante :

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

maxParallelism considérations

Le parallélisme maximal qu'une tâche Flink peut mettre à l'échelle 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 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 le dimensionnement de 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'anciennemaxParallelism. 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.