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:
Revisar 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. 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: → →
RUNNINGUPDATINGRUNNINGConserve 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.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
SourceFunctionversión anterior/porSinkFunctionlas API de FLIP-27 origen FLIP-143 y de destinoSustituya 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.jarAnote 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:
Navega hasta tu aplicación
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'
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:
Navegue hasta su aplicación
Elija Instantáneas
Seleccione Crear instantánea
Introduzca un nombre para la 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 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-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 actualizaRuntimeEnvironmentla 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:
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
RUNNINGpero 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.FAILEDCompruebe 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 sinumRestartses cerouptimeorunningTimeva en aumento.
Métricas de puntos de control:
lastCheckpointDuration: Deberían ser similares 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
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:
Navega hasta tu aplicación
Seleccione 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 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.