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:
Revisión Guía de compatibilidad estatal para las actualizaciones de Flink 2.2
Asegúrese de tener un entorno que no sea de producción para las pruebas
Documente la configuración y las dependencias actuales de su aplicació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: → →
RUNNINGUPDATINGRUNNINGConserve 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.xmlbuild.gradleActualice 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 antigua
SourceFunction/por FLIP-27SinkFunctionSource y FLIP-143 Sink APIsSustituya 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:
Navegue hasta su solicitud
Elija Configuración
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:
Navegue hasta su aplicación
Elige Instantáneas
Elija Crear instantánea
Introduzca el nombre de una instantánea (por ejemplo,
pre-flink-2.2-upgrade)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 CLI
update-applicationacción. Usa CloudFormation.
Actualiza el
RuntimeEnvironmentcampo. 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 tuRuntimeEnvironmentaplicació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:
RUNNING→UPDATING→RUNNINGCompruebe 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 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.FAILEDCompruebe 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 valornumRestartses cerouptimeorunningTimeva en aumento.
Métricas de puntos de control:
lastCheckpointDuration: Debe ser similar a los valores anteriores a la actualizaciónnumberOfFailedCheckpoints: 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:
Navega hasta tu aplicación
Elija Acciones → Revertir
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.