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.
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 información sobre cómo Apache Flink programa instancias paralelas de tareas, consulte Ejecución paralela
Temas
Configuración del paralelismo de aplicaciones y la KPU ParallelismPer
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 es1
, y el valor máximo es256
. -
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 es1
y el máximo es8
. En el caso de las aplicaciones que tienen operaciones de bloqueo (por ejemplo, E/S), un valor más alto deParallelismPerKPU
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 Configuración del paralelismo: operador en la documentación
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 su 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 su 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 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" } } } }
Escalado automático
Managed Service para Apache Flink escala elásticamente el paralelismo de la aplicación para adaptarse al rendimiento de datos de su fuente y a la complejidad del operador en la mayoría de los escenarios. Managed Service para Apache Flink supervisa el uso de recursos (CPU) de la aplicación y amplía o reduce el paralelismo de la aplicación elásticamente en consecuencia:
Su aplicación se amplía (aumenta el paralelismo) si el máximo CloudWatch métrico
containerCPUUtilization
es superior al 75 por ciento o superior durante 15 minutos. Esto significa que la acciónScaleUp
se activa cuando hay 15 puntos de datos consecutivos con un período de 1 minuto iguales o superiores al 75 por ciento.La aplicación se reduce verticalmente (reduce el paralelismo) cuando el uso de la CPU permanece por debajo del 10 por ciento durante seis horas. Esto significa que la acción
ScaleDown
se activa cuando hay 360 puntos de datos consecutivos con un período de 1 minuto iguales o inferiores al 10 por ciento.
nota
Se puede hacer referencia a un período máximo de containerCPUUtilization
de más de 1 minuto para encontrar la correlación con un punto de datos utilizado para la acción de escalado, pero no es necesario reflejar el momento exacto en que se activa la acción.
Managed Service para Apache Flink no reducirá el valor CurrentParallelism
de la aplicación a un valor inferior al de la configuración Parallelism
de la aplicación.
Cuando el servicio de Managed Service para Apache Flink escale su aplicación, aparecerá en estado AUTOSCALING
. Puede comprobar el estado actual de su solicitud mediante las DescribeApplicationacciones o. ListApplications Mientras el servicio escala tu aplicación, la única acción válida de la API que puedes usar es StopApplicationestablecer el Force
parámetro entrue
.
Puede usar la propiedad AutoScalingEnabled
(parte de FlinkApplicationConfiguration
) para habilitar o deshabilitar el comportamiento de escalado automático. Se cobran a su AWS cuenta las KPU que aprovisione Managed Service for Apache Flink, en función de la configuración parallelism
y parallelismPerKPU
la aplicación. Si se produce un pico de actividad, ello aumentará los costos de Managed Service para Apache Flink.
Para obtener más información sobre precios, consulte Precios de Amazon Managed Service para Apache Flink
Tenga en cuenta lo siguiente en relación con el escalado de la aplicación:
El escalado automático está habilitado de forma predeterminada.
El escalado no se aplica a los cuadernos de Studio. Sin embargo, si implementa un cuaderno de Studio como una aplicación de estado perdurable, el escalado se aplicará a la aplicación implementada.
La aplicación tiene un límite predeterminado de 64 KPU. Para obtener más información, consulte Cuota.
Cuando el escalado automático actualiza el paralelismo de la aplicación, la aplicación sufre un tiempo de inactividad. Para evitar este tiempo de inactividad, haga lo siguiente:
Deshabilite el escalado automático.
Configura
parallelism
yparallelismPerKPU
con la acción de tu aplicación. UpdateApplication Para obtener más información sobre cómo realizar la configuración de paralelismo de la aplicación, consulte Actualización del paralelismo de su aplicación.Supervise periódicamente el uso de los recursos de la aplicación para comprobar que la aplicación tenga una configuración de paralelismo correcta adecuada para su carga de trabajo. Para obtener información sobre supervisión del uso de recursos de asignación, consulte Visualización de métricas y dimensiones en Managed Service for Apache Flink.
Consideraciones sobre maxParallelism
La lógica del escalado automático evitará escalar una tarea de Flink a un paralelismo que provoque interferencias con la tarea y el
maxParallelism
del operador. Por ejemplo, en caso de un trabajo simple con solo un origen y un receptor, donde el origen tiene unmaxParallelism
de 16 y elsink
tiene 8, no realizaremos el escalado automático del trabajo a valores superiores a 8.Si no se configuró
maxParallelism
para un trabajo, Flink usará 128 por defecto. Por lo tanto, si considera que un trabajo debe ejecutarse con un paralelismo superior a 128, tendrá que configurar ese número para la aplicación.Si espera que se produzca el escalado automático del trabajo, pero no ve que ocurra, asegúrese de que los valores de
maxParallelism
lo permitan.
Para obtener información adicional, consulte Enhanced monitoring and automatic scaling for Apache Flink
Para ver un ejemplo, consulte kda-flink-app-autoscaling