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.
Utilice las mejores prácticas de rendimiento
En esta sección se describen las consideraciones especiales a la hora de diseñar una aplicación orientada al desempeño.
Administración correcta del escalado
Esta sección contiene información sobre la administración del escalado a nivel de aplicación y a nivel de operador.
Esta sección contiene los siguientes temas:
Gestión correcta del escalado de las aplicaciones
Puede utilizar el escalado automático para gestionar los picos inesperados en la actividad de las aplicaciones. Las solicitudes KPUs aumentarán automáticamente si se cumplen los siguientes criterios:
El ajuste de escala automático está activado para la aplicación.
CPUel uso se mantiene por encima del 75 por ciento durante 15 minutos.
Si el ajuste de escala automático está activado, pero el CPU uso no se mantiene dentro de este umbral, la aplicación no se ampliaráKPUs. Si se produce un aumento en el CPU uso que no alcanza este umbral, o si se produce un aumento en una métrica de uso diferente, por ejemploheapMemoryUtilization
, aumente la escala manualmente para que la aplicación pueda gestionar los picos de actividad.
nota
Si la aplicación ha agregado automáticamente más recursos mediante el escalado automático, la aplicación liberará los nuevos recursos tras un período de inactividad. La reducción de los recursos afectará temporalmente al desempeño.
Para obtener más información acerca del escalado, consulte Implementar el escalado de aplicaciones.
Gestión correcta del escalado del operador
Puede mejorar el desempeño de su aplicación verificando que la carga de trabajo de la aplicación se distribuya de manera uniforme entre los procesos de trabajo y que los operadores de la aplicación dispongan de los recursos del sistema que necesitan para mantener la estabilidad y el desempeño.
Puede establecer el paralelismo para cada operador en el código de su aplicación mediante el parámetro parallelism
. Si no establece el paralelismo para un operador, éste utilizará el ajuste de paralelismo a nivel de aplicación. Los operadores que utilizan la configuración de paralelismo a nivel de aplicación pueden utilizar todos los recursos del sistema disponibles para la aplicación, lo que hace que la aplicación se vuelva inestable.
Para determinar mejor el paralelismo de cada operador, tenga en cuenta los requisitos de recursos relativos del operador en comparación con los demás operadores de la aplicación. Defina los operadores que consumen más recursos con una configuración de paralelismo de operadores más alta que los operadores que consumen menos recursos.
El paralelismo total de los operadores de la aplicación es la suma del paralelismo de todos los operadores de la aplicación. Para ajustar el paralelismo total de los operadores de la aplicación, debe determinar la mejor relación entre este y el total de tareas disponibles para la aplicación. Una relación estable típica entre el paralelismo total del operador y los intervalos de tareas es de 4:1, es decir, la aplicación tiene un intervalo de tareas disponible por cada cuatro subtareas del operador disponibles. Una aplicación con operadores que consumen más recursos puede necesitar una relación de 3:1 o 2:1, mientras que una aplicación con operadores que consumen menos recursos puede ser estable con una relación de 10:1.
Puede establecer la relación que utilizará el operador usando Utilice las propiedades de tiempo de ejecución, para ajustar el paralelismo del operador sin necesidad de compilar ni cargar el código de la aplicación.
El siguiente ejemplo de código muestra cómo establecer el paralelismo de los operadores como una relación ajustable del paralelismo de la aplicación actual:
Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties(); operatorParallelism = StreamExecutionEnvironment.getParallelism() / Integer.getInteger( applicationProperties.get("OperatorProperties").getProperty("MyOperatorParallelismRatio") );
Para obtener información sobre las subtareas, las tareas disponibles y otros recursos de la aplicación, consulte Revise los recursos de aplicaciones de Managed Service for Apache Flink.
Para controlar la distribución de la carga de trabajo entre los procesos de trabajo de la aplicación, utilice la configuración Parallelism
y el método de partición KeyBy
. Para obtener más información, consulte los siguientes temas en la documentación de Apache Flink
Supervisión del uso de los recursos de dependencia externa
Si hay un cuello de botella en el rendimiento en un destino (como Kinesis Streams, Firehose, DynamoDB o Service), la aplicación experimentará una OpenSearch contrapresión. Compruebe que las dependencias externas se hayan obtenido correctaente para el rendimiento de su aplicación.
nota
Los errores en otros servicios pueden provocar errores en la aplicación. Si observa errores en su aplicación, compruebe si hay errores en los CloudWatch registros de los servicios de destino.
Ejecución local de la aplicación Apache Flink
Para solucionar problemas de memoria, puede ejecutar la aplicación en una instalación local de Flink. Esto le permitirá acceder a herramientas de depuración, como el rastreo de pilas y los volcados de pilas, que no están disponibles al ejecutar la aplicación en Managed Service for Apache Flink.
Para obtener información sobre cómo crear una instalación local de Flink, consulte Standalone