¿Por qué falla el punto de control de mi aplicación Amazon Kinesis Data Analytics?

Última actualización: 25/02/2022

El punto de control o punto de guardado de mi aplicación Amazon Kinesis Data Analytics tiene un error.

Descripción corta

Los puntos de control son el método que se utiliza para implementar la tolerancia a errores en Amazon Kinesis Data Analytics para Apache Flink. Si la aplicación no se optimiza o no se aprovisiona correctamente, puede provocar errores en los puntos de control.

Algunas de las principales causas de los errores en los puntos de control son las siguientes:

  • Para Rocks DB, Apache Flink lee los archivos del almacenamiento local y escribe en el almacenamiento persistente remoto, es decir, Amazon Simple Storage Service (Amazon S3). El rendimiento del disco local y la velocidad de carga pueden afectar los puntos de control y provocar errores en ellos.
  • Los estados del punto de guardado y de control se almacenan en un bucket de S3 que sea propiedad del servicio y que AWS administre por completo. Se accede a estos estados siempre que se produce un error en una aplicación. Los errores transitorios del servidor o la latencia en este bucket de S3 pueden provocar errores en los puntos de control.
  • Una función de proceso que haya creado en la que la función se comunique con un recurso externo, como Amazon DynamoDB, durante la comprobación puede provocar errores en los puntos de control.
  • Las errores debidos a la serialización del estado, como la falta de coincidencia del serializador con los datos entrantes, pueden provocar errores en los puntos de control.
  • Es posible que la cantidad de unidades de procesamiento de Kinesis (KPU) aprovisionadas para la aplicación no sea suficiente. Para encontrar las KPU asignadas, utilice el siguiente cálculo:
    KPU asignadas para la aplicación = Parallelism/ParallelismPerKPU
  • Un mayor tamaño de los estados de aplicación puede provocar un aumento de la latencia de los puntos de control. Esto se debe a que el administrador de tareas tarda más tiempo en guardar el punto de control, lo que puede provocar una excepción de memoria insuficiente.
  • Una distribución sesgada del estado podría provocar que un administrador de tareas maneje más datos en comparación con otros. Incluso si se aprovisionan suficientes KPU (recursos), uno o más administradores de tareas sobrecargados pueden provocar una excepción de memoria insuficiente.
  • Una cardinalidad alta indica que hay un gran número de claves únicas en los datos entrantes. Si el trabajo utiliza el operador KeyBy para particionar los datos entrantes y la clave en la que se particionan los datos tiene una alta cardinalidad, podría producirse una comprobación lenta. Con el tiempo, esto podría provocar errores en los puntos de control.

Resolución

  • El tamaño del estado de su aplicación podría aumentar rápidamente, lo que provocaría un aumento del tamaño y la duración del punto de control. Puede monitorear estos valores con las métricas de Amazon CloudWatch lastCheckPointDuration ylastCheckpointSize. Para obtener más información, consulte Métricas de la aplicación.
  • Aumente el paralelismo del operador que procesa más datos. Puede definir el paralelismo para un operador, fuente de datos o receptor de datos individual llamando al método setParallelism().
  • Ajuste los valores de Parallelism y ParallelismPerKPU para una utilización óptima de las KPU. Asegúrese de que el escalado automático no esté desactivado para su aplicación de Amazon Kinesis Data Analytics. El valor del parámetro maxParallelism le permite escalar a la cantidad deseada de KPU. Para obtener más información, consulte Escalado de aplicaciones en Kinesis Data Analytics para Apache Flink.
  • Defina TTL en el estado para asegurarse de que el estado se limpie periódicamente.
  • Optimice el código para permitir una mejor estrategia de partición. Puede utilizar el rebalanceo de particiones para ayudar a distribuir los datos de manera uniforme. Este método utiliza un método rotativo ponderado para la distribución.
  • Optimice el código para reducir el tamaño de la ventana de manera que se reduzca la cardinalidad del número de claves en esa ventana.

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?