Implemente el escalado de aplicaciones en Managed Service for Apache Flink - Managed Service para Apache Flink

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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente el escalado de aplicaciones en Managed Service for 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 información sobre cómo Apache Flink programa instancias paralelas de tareas, consulte Ejecución paralela en la documentación de Apache Flink.

Configure el paralelismo de las aplicaciones y ParallelismPer KPU

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 establecer el número de tareas paralelas que se pueden programar por unidad de procesamiento de Kinesis (KPU) de su 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 implica ParallelismPerKPU una utilización total de los KPU recursos.

nota

El límite de Parallelism es igual a ParallelismPerKPU multiplicado por el límite de KPUs (que tiene un valor predeterminado de 64). El KPUs límite 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 Configuración del paralelismo: operador en la documentación de Apache Flink.

Asignar unidades de procesamiento de Kinesis

El servicio gestionado para Apache Flink aprovisiona capacidad como. KPUs Una sola KPU unidad le proporciona 1 V CPU y 4 GB de memoria. Por cada espacio KPU asignado, también se proporcionan 50 GB de almacenamiento para aplicaciones en ejecución.

Managed Service for Apache Flink calcula KPUs los recursos necesarios para ejecutar la aplicación mediante las ParallelismPerKPU propiedades Parallelism y, 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 Actualice el paralelismo de su aplicación.

El límite predeterminado KPUs para su aplicación es 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 KPU cobra un adicional por motivos de orquestación. Para obtener más información, consulte Precios de Managed Service para Apache Flink.

Actualice el paralelismo de su aplicación

Esta sección contiene ejemplos de solicitudes de API acciones que establecen el paralelismo de una aplicación. Para obtener más ejemplos e instrucciones sobre cómo usar bloques de solicitudes con API acciones, consulte. Código de ejemplo de la API de Managed Service for 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:::mybucket", "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" } } } }

maxParallelism consideraciones

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

Para saber cómo se calcula el valor predeterminado maxParallelism de un operador y cómo anularlo, consulte Configuración del paralelismo máximo en la documentación de Apache Flink.

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

nota

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

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

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

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

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

  • Si escala manualmente la aplicación más allá del paralelismo máximo, la aplicación no podrá iniciarse.