Implementación del escalado de aplicaciones en Managed Service para Apache Flink - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon (Amazon MSF) se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

Implementación del escalado de aplicaciones en Managed Service para Apache Flink

Puede configurar la ejecución paralela de las tareas y la asignación de recursos para que Amazon Managed Service para Apache Flink implemente la reducción horizontal. Para obtener más información sobre cómo Apache Flink programa instancias paralelas de las tareas, consulte Parallel Execution en la documentación de Apache Flink.

Configuración del paralelismo de aplicaciones y ParallelismPerKPU

Para configurar la ejecución paralela de las tareas de la aplicación de Managed Service para Apache Flink (como leer de una fuente o ejecutar un operador), se utilizan las siguientes propiedades ParallelismConfiguration:

  • Parallelism: utilice esta propiedad para establecer el paralelismo predeterminado de la aplicación de Apache Flink. Todos los operadores, las fuentes y los receptores se ejecutan con este paralelismo, a menos que estén anulados en el código de la aplicación. El valor predeterminado es 1, y el valor máximo es 256.

  • ParallelismPerKPU: utilice esta propiedad para configurar el número de tareas paralelas que se pueden programar por unidad de procesamiento de Kinesis (KPU) de la aplicación. El valor predeterminado es 1 y el máximo es 8. En el caso de las aplicaciones que tienen operaciones de bloqueo (por ejemplo, E/S), un valor más alto de ParallelismPerKPU implica la plena utilización de los recursos de KPU.

nota

El límite de Parallelism es igual a ParallelismPerKPU veces el límite de las KPU (que tiene un valor predeterminado de 64). El límite de las KPU se puede aumentar solicitando un aumento del límite. Para obtener instrucciones sobre cómo solicitar un aumento de este límite, consulte “Para solicitar un aumento del límite” en Service Quotas.

Para obtener información sobre cómo configurar el paralelismo de tareas para un operador específico, consulte Setting the Parallelism: Operator en la documentación de Apache Flink.

Asignación de unidades de procesamiento de Kinesis

Provisión de capacidad de Managed Service para Apache Flink como KPU. Una sola KPU le proporciona 1 vCPU y 4 GB de memoria. Por cada KPU asignada, también se proporcionan 50 GB de almacenamiento para aplicaciones en ejecución.

Managed Service para Apache Flink calcula las KPU necesarias para ejecutar la aplicación mediante las propiedades Parallelism y ParallelismPerKPU, de la siguiente manera:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

Managed Service para Apache Flink proporciona rápidamente recursos a las aplicaciones en respuesta a los picos de rendimiento o de la actividad de procesamiento. Elimina los recursos de la aplicación de forma gradual una vez que ha pasado el pico de actividad. Para deshabilitar la asignación automática de recursos, defina el valor AutoScalingEnabled en false, como se describe más adelante en Actualización del paralelismo de la aplicación.

El límite predeterminado para KPU para su aplicación es de 64. Para obtener instrucciones sobre cómo solicitar un aumento de este límite, consulte “Para solicitar un aumento del límite” en Service Quotas.

nota

Se cobra una KPU adicional por motivos de orquestación. Para obtener más información, consulte Precios de Managed Service para Apache Flink.

Actualización del paralelismo de la aplicación

Esta sección contiene ejemplos de solicitudes de acciones de la API que establecen el paralelismo de una aplicación. Para ver más ejemplos e instrucciones sobre cómo usar los bloques de solicitudes con las acciones de la API, consulte Ejemplo de código de API de Managed Service para Apache Flink.

El siguiente ejemplo de solicitud de la acción CreateApplication establece el paralelismo al crear una aplicación:

{ "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 } } } }

El siguiente ejemplo de solicitud de la acción UpdateApplication establece el paralelismo para una aplicación existente:

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

El siguiente ejemplo de solicitud de la acción UpdateApplication deshabilita el paralelismo para una aplicación existente:

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

Consideraciones sobre maxParallelism

El paralelismo máximo que puede escalar una tarea de Flink está limitado por el maxParallelism mínimo en todos los operadores de la tarea. Por ejemplo, en caso de un trabajo simple con solo un origen y un receptor, y el origen tiene un maxParallelism de 16 y el receptor tiene 8, la aplicación no podrá escalar más allá del paralelismo de 8.

Para saber cómo se calcula el valor predeterminado maxParallelism de un operador y cómo anularlo, consulte Setting the Maximum Parallelism en la documentación de Apache Flink.

Como regla básica, tenga en cuenta que si no define un maxParallelism para ningún operador e inicia la aplicación con un paralelismo menor o igual a 128, todos los operadores tendrán un maxParallelism de 128.

nota

El paralelismo máximo del trabajo es el límite superior del paralelismo para escalar la aplicación y retener el estado.

Si se modifica el maxParallelism de una aplicación existente, la aplicación no podrá reiniciarse a partir de una instantánea anterior tomada con el antiguo maxParallelism. Solo puede reiniciar la aplicación sin una instantánea.

Si planea escalar la aplicación a un paralelismo superior a 128, debe configurar de forma explícita el maxParallelism en la aplicación.

  • La lógica del escalado automático evitará escalar una tarea de Flink a un paralelismo que supere el paralelismo máximo de la tarea.

  • Si se utiliza un escalado automático personalizado o un escalado programado, configúrelos para que no superen el paralelismo máximo del trabajo.

  • Si escala de manera manual la aplicación más allá del paralelismo máximo, la aplicación no se iniciará.