View a markdown version of this page

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 instrucciones paso a paso para actualizar su aplicación Amazon Managed Service para Apache Flink de Flink 1.x a Flink 2.2. Se trata de una actualización importante de la versión con cambios importantes que requieren una planificación y unas pruebas cuidadosas.

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

La operación de actualización puede mover la aplicación de Flink 1.x a 2.2 conservando el estado, pero no puede volver de la versión 2.2 a la 1.x con el estado 2.2. Si tu aplicación no funciona correctamente después de la actualización, usa la API de reversión 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. La comprensión de estas rutas le ayuda a prepararse adecuadamente y a establecer expectativas realistas.

Ruta 1: estado binario y de aplicación compatible

Qué esperar:

  • Invoca 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 datos ni volver a procesarlos

  • La misma experiencia que las migraciones de versiones secundarias

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

Ruta 2: Incompatibilidades binarias

Qué esperar:

  • Invoca la operación de actualización

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

  • Con la reversión automática habilitada: las aplicaciones retroceden automáticamente en cuestión de minutos sin que usted intervenga

  • Con la reversión automática desactivada: las aplicaciones permanecen en estado de ejecución sin procesar los datos; se restablecen 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 la ruta 1

Ideal para: aplicaciones que utilizan API eliminadas y que se detectan al iniciar un trabajo de Flink

Ruta 3: Estado de aplicación incompatible

Qué esperar:

  • Invoca la operación de actualización

  • Al principio, la migración parece realizarse correctamente

  • Las aplicaciones entran en ciclos de reinicio en cuestión de segundos cuando falla la restauración del estado

  • Detecte las fallas mediante CloudWatch métricas que muestran reinicios continuos

  • Invoque manualmente la operación de reversión

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

  • Revisa tu Migración estatal solicitud

Ideal para: aplicaciones con incompatibilidades de serialización estatal (POJO con colecciones, estado determinado) Kryo-serialized

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

Actualice el código de la solicitud

Actualiza el código de tu aplicación para que sea compatible con Flink 2.2:

  • Actualice las dependencias de Flink a la versión 2.2.1 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 SourceFunction versión anterior/por SinkFunction las API de FLIP-27 origen FLIP-143 y de destino

    • 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

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

  • Anote el bucket y la clave de S3 para usarlos en la etapa de actualización

Fase 2: Habilitar la reversión automática

Auto-rollback permite a Amazon Managed Service para Apache Flink volver automáticamente a la versión anterior si la actualización falla.

Compruebe el estado de reversión automática

Consola de administración de AWS:

  1. Navega hasta tu aplicación

  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'

Habilite 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 la aplicación tiene habilitadas las instantáneas automáticas, 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.

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

Consola de administración de AWS:

  1. Navegue hasta su aplicación

  2. Elija Instantáneas

  3. Seleccione Crear instantánea

  4. Introduzca un nombre para la 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 esté listo READY antes de continuar.

Fase 4: Actualizar la aplicación

Puedes actualizar tu aplicación Flink usando la UpdateApplication acció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 CLI update-application acció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 RuntimeEnvironment la ubicación actual y no elimina la solicitud.

  • 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 para Apache Flink valida la compatibilidad entre la versión de tiempo de ejecución original y la versión de tiempo de ejecución de destino. Esta comprobación de compatibilidad se ejecuta cuando la realizas UpdateApplication mientras está en RUNNING estado o al siguiente StartApplication si la actualizas mientras está en READY estado.

Actualice desde el estado EN 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" } } } }'

Actualice 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

Verificación de compatibilidad

  • Utilice la API de operaciones para comprobar el estado de la actualización. Si hay incompatibilidades binarias o problemas con el inicio del 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 se bloquea 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. Consulta 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 debería 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á activa RUNNING pero aún está en el tiempo de ejecución anterior, se activa la reversión automática. La API de operaciones mostrará la operación como. FAILED Compruebe los registros para encontrar la excepción de error.

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

Métrica de reinicio:

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

Métricas de puntos de control:

  • lastCheckpointDuration: Deberían ser similares 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

  • Verifique que los datos se lean de las fuentes

  • Verifique que los datos se escriban en los sumideros

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

  • Compare los resultados con los valores de referencia anteriores a la actualización

Validación del rendimiento

  • Supervise las métricas de latencia (tiempo de procesamiento de extremo a extremo)

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

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

  • Supervise el uso de la memoria y la CPU

Funciona durante más de 24 horas

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

  • No hay 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 para 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. Seleccione Acciones Revertir

  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 correcta tomada antes de la actualización

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

  • La reversión usa la instantánea tomada antes de la actualización

  • Realice siempre una instantánea antes de la actualización (fase 3)

Siguientes pasos

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