Actualización a Flink 2.2: guía completa - Managed Service 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.

Actualización a Flink 2.2: guía completa

Esta guía proporciona step-by-step instrucciones para actualizar la aplicación Amazon Managed Service for Apache Flink de Flink 1.x a Flink 2.2. Se trata de una actualización de versión importante con cambios importantes que requieren una planificación y pruebas cuidadosas.

La actualización de la versión principal es unidireccional

La operación de actualización puede hacer que la aplicación pase de la versión 1.x a la 2.2 manteniendo el estado, pero no puede volver de la versión 2.2 a la versión 1.x con el estado 2.2. Si su aplicación deja de funcionar correctamente tras la actualización, utilice la API Rollback para volver a la versión 1.x con el estado 1.x original de la última instantánea.

Requisitos previos

Antes de comenzar la actualización:

Comprenda sus rutas de migración

Su experiencia de actualización depende de la compatibilidad de su aplicación con Flink 2.2. Comprender estos caminos le ayuda a prepararse adecuadamente y a establecer expectativas realistas.

Ruta 1: estado del binario y de la aplicación compatibles

Qué esperar:

  • Invoque la operación de actualización

  • Complete la migración a la versión 2.2 con la transición del estado de la aplicación: → → RUNNING UPDATING RUNNING

  • Conserve todo el estado de la aplicación sin perder ni reprocesar los datos

  • La misma experiencia que en las migraciones de versiones menores

Ideal para: aplicaciones sin estado o aplicaciones que utilizan una serialización compatible (Avro, esquemas de Protobuf compatibles, sin colecciones) POJOs

Ruta 2: Incompatibilidades binarias

Qué esperar:

  • Invoque la operación de actualización

  • La operación falla y revela la incompatibilidad binaria a través de la API de operaciones y los registros

  • Con la reversión automática habilitada: las aplicaciones se restablecen automáticamente en cuestión de minutos sin su intervención

  • Con la reversión automática desactivada: las aplicaciones permanecen en estado de ejecución sin procesamiento de datos; se restablece manualmente a la versión anterior

  • Una vez que se haya corregido el binario, utilice la UpdateApplication API para disfrutar de una experiencia similar a la de Path 1

Ideal para: aplicaciones eliminadas APIs que se detectan durante el inicio de un trabajo de Flink

Ruta 3: estado de la aplicación incompatible

Qué esperar:

  • Invoque la operación de actualización

  • Al principio parece que la migración se ha realizado correctamente

  • Las aplicaciones entran en ciclos de reinicio en cuestión de segundos cuando se produce un error en la restauración del estado

  • Detecte los fallos mediante CloudWatch métricas que muestran los reinicios continuos

  • Invoque manualmente la operación de reversión

  • Vuelva a la producción unos minutos después de iniciar la reversión

  • Revise Migración estatal su solicitud

Ideal para: aplicaciones con incompatibilidades de serialización por estado (POJOs con colecciones, cierto estado de serialización criptográfica)

nota

Se recomienda encarecidamente crear una réplica de la aplicación de producción y probar cada una de las siguientes fases de la actualización en la réplica antes de seguir los mismos pasos para la aplicación de producción.

Fase 1: Preparación

Actualizar el código de la aplicación

Actualice el código de su aplicación para que sea compatible con Flink 2.2:

  • Actualice las dependencias de Flink a la versión 2.2.0 en su o pom.xml build.gradle

  • Actualice las dependencias de los conectores a las versiones compatibles con Flink 2.2 (consulte) Disponibilidad de conectores

  • Elimine el uso obsoleto de la API:

    • Sustituya DataSet la API por una DataStream API o una tabla (API/SQL)

    • Sustituya la versión antiguaSourceFunction/por FLIP-27 SinkFunction Source y FLIP-143 Sink APIs

    • Sustituya el uso de la API de Scala por la API de Java

  • Actualización a Java 17

Cargue el código de aplicación actualizado

  • Cree el JAR de su aplicación con las dependencias de Flink 2.2

  • Cargue en Amazon S3 con un nombre de archivo diferente al de su JAR actual (por ejemplo,my-app-flink-2.2.jar)

  • Anote el depósito y la clave de S3 que se utilizarán en el paso de actualización

Fase 2: habilitar la reversión automática

La reversión automática permite a Amazon Managed Service for Apache Flink volver automáticamente a la versión anterior si se produce un error en la actualización.

Compruebe el estado de la reversión automática

Consola de administración de AWS:

  1. Navegue hasta su solicitud

  2. Elija Configuración

  3. En Configuración de la aplicación, compruebe que la reversión del sistema esté habilitada

AWS CLI:

aws kinesisanalyticsv2 describe-application \ --application-name MyApplication \ --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'

Habilitar la reversión automática (si no está habilitada)

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --application-configuration-update '{ "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": true } }'

Fase 3: tomar una instantánea (opcional)

Si las instantáneas automáticas están habilitadas para su aplicación, puede omitir este paso; de lo contrario, tome una instantánea de la aplicación para guardar el estado de la aplicación antes de la actualización.

Tome una instantánea de la aplicación en ejecución

Consola de administración de AWS:

  1. Navegue hasta su aplicación

  2. Elige Instantáneas

  3. Elija Crear instantánea

  4. Introduzca el nombre de una instantánea (por ejemplo,pre-flink-2.2-upgrade)

  5. Elija Create (Creación de).

AWS CLI:

aws kinesisanalyticsv2 create-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Verifique la creación de la instantánea

aws kinesisanalyticsv2 describe-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Espere hasta que SnapshotStatus sea así READY antes de continuar.

Fase 4: Actualizar la aplicación

Puede actualizar su aplicación Flink mediante la UpdateApplicationacción.

Se puede llamar a la API de UpdateApplication de varias maneras:

  • Utilice la Consola de administración de AWS.

    • Vaya a la página de la aplicación en la Consola de administración de AWS.

    • Elija Configurar.

    • Seleccione el nuevo tiempo de ejecución y la instantánea desde la cual desee empezar, lo que también se conoce como configuración de restauración. Utilice la configuración más reciente como la configuración de restauración para iniciar la aplicación desde la última instantánea. Señale la nueva aplicación actualizada JAR/zip en Amazon S3.

  • Usa la AWS CLIupdate-applicationacción.

  • Usa CloudFormation.

    • Actualiza el RuntimeEnvironment campo. Anteriormente, CloudFormation eliminaba la aplicación y creaba una nueva, lo que provocaba la pérdida de las instantáneas y del resto del historial de la aplicación. Ahora CloudFormation actualiza tu RuntimeEnvironment aplicación y no la borra.

  • Usa el AWS SDK.

    • Consulte la documentación del SDK para obtener información sobre el lenguaje de programación de su elección. Consulte UpdateApplication.

Se puede realizar la actualización mientras la aplicación está en estado RUNNING o mientras la aplicación está detenida en ese el estado READY. Amazon Managed Service for Apache Flink valida la compatibilidad entre la versión en tiempo de ejecución original y la versión en tiempo de ejecución de destino. Esta comprobación de compatibilidad se ejecuta cuando se está en UpdateApplication el RUNNING estado o, al siguiente, StartApplication si se actualiza mientras se está en READY el estado.

Actualización desde el estado DE EJECUCIÓN

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Actualización desde el estado READY

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Fase 5: Actualización del monitor

Comprobación de compatibilidad

  • Utilice la API de operaciones para comprobar el estado de la actualización. Si hay incompatibilidades binarias o problemas al iniciar el trabajo, la operación de actualización fallará con los registros.

  • Si la operación de actualización se ha realizado correctamente, pero la aplicación está atascada en los bucles de reinicio, significa que el estado no es compatible con la nueva versión de Flink o que hay un problema con el código actualizado. Revise Guía de compatibilidad estatal para las actualizaciones de Flink 2.2 cómo identificar los problemas de incompatibilidad entre estados.

Controle el estado de las aplicaciones

Estado de la aplicación:

  • El estado de la solicitud debe cambiar: RUNNINGUPDATINGRUNNING

  • Compruebe el tiempo de ejecución de la aplicación. Si es 2.2, la operación de actualización se realizó correctamente.

  • Si la aplicación está activaRUNNING, pero aún se encuentra en el tiempo de ejecución anterior, se activará la reversión automática. La API de operaciones mostrará la operación como. FAILED Compruebe los registros para encontrar la excepción en caso de error.

Además, monitorea estas métricas en CloudWatch:

Reinicie la métrica:

  • numRestarts: Supervise los reinicios inesperados: la actualización se realiza correctamente si el valor numRestarts es cero uptime o runningTime va en aumento.

Métricas de puntos de control:

  • lastCheckpointDuration: Debe ser similar a los valores anteriores a la actualización

  • numberOfFailedCheckpoints: Debe permanecer en 0

Fase 6: Validar el comportamiento de la aplicación

Una vez que la aplicación se ejecute en Flink 2.2:

Validación funcional

  • Compruebe que los datos se estén leyendo de las fuentes

  • Compruebe que los datos se estén escribiendo en los sumideros

  • Compruebe que la lógica empresarial produzca los resultados esperados

  • Compare los resultados con la línea base previa a la actualización

Validación del rendimiento

  • Supervise las métricas de latencia (tiempo end-to-end de procesamiento)

  • Supervise las métricas de rendimiento (registros por segundo)

  • Supervise la duración y el tamaño de los puntos de control

  • Supervise la utilización de la memoria y la CPU

Funciona durante más de 24 horas

Deje que la aplicación se ejecute durante al menos 24 horas en producción para garantizar que:

  • Sin pérdidas de memoria

  • Comportamiento estable de los puntos de control

  • Sin reinicios inesperados

  • Rendimiento constante

Fase 7: procedimientos de reversión

Si la actualización falla o la aplicación se está ejecutando pero no funciona correctamente, vuelva a la versión anterior.

Reversión automática

Si la reversión automática está habilitada y la actualización falla durante el inicio, Amazon Managed Service for Apache Flink vuelve automáticamente a la versión anterior.

Reversión manual

Si la aplicación se está ejecutando pero no funciona correctamente, usa la RollbackApplication API:

Consola de administración de AWS:

  1. Navega hasta tu aplicación

  2. Elija AccionesRevertir

  3. Confirme la reversión

AWS CLI:

aws kinesisanalyticsv2 rollback-application \ --application-name MyApplication \ --current-application-version-id <version-id>

Qué ocurre durante la reversión:

  • La aplicación se detiene

  • El tiempo de ejecución vuelve a la versión anterior de Flink

  • El código de la aplicación vuelve al JAR anterior

  • La aplicación se reinicia desde la última instantánea realizada correctamente antes de la actualización

importante
  • No se puede restaurar una instantánea de Flink 2.2 en Flink 1.x

  • Rollback utiliza la instantánea tomada antes de la actualización

  • Realice siempre una instantánea antes de actualizar (fase 3)

Siguientes pasos

Si tiene preguntas o problemas durante la actualización, consulte Resolución de problemas de Managed Service para Apache Flink o póngase en contacto con AWS Support.