

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
<a name="flink-2-2-upgrade-guide"></a>

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
<a name="upgrade-guide-prerequisites"></a>

Antes de comenzar la actualización:
+ Revisar [Cambios y desaprobaciones de última hora](flink-2-2.md#flink-2-2-breaking-changes)
+ Revisión [Guía de compatibilidad estatal para las actualizaciones de Flink 2.2](state-compatibility.md)
+ 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
<a name="upgrade-guide-migration-paths"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 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](state-compatibility.md#state-compat-migration) 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
<a name="upgrade-guide-phase-1"></a>

**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](flink-2-2.md#flink-2-2-connectors)
+ **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-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
<a name="upgrade-guide-phase-2"></a>

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

1. Elija **Configuración**

1. 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)
<a name="upgrade-guide-phase-3"></a>

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

1. Elige **Instantáneas**

1. Elija **Crear instantánea**

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

1. 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
<a name="upgrade-guide-phase-4"></a>

Puede actualizar su aplicación Flink mediante la [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)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[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html)**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 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 [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html).

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
<a name="upgrade-guide-phase-5"></a>

**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](state-compatibility.md) 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` → `RUNNING`
+ 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 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
<a name="upgrade-guide-phase-6"></a>

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
<a name="upgrade-guide-phase-7"></a>

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

1. Elija **Acciones** → **Revertir**

1. 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
<a name="upgrade-guide-next-steps"></a>

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