Atualizando para o Flink 2.2: guia completo - Managed Service for Apache Flink

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Atualizando para o Flink 2.2: guia completo

Este guia fornece step-by-step instruções para atualizar seu aplicativo Amazon Managed Service for Apache Flink do Flink 1.x para o Flink 2.2. Esta é uma atualização de versão importante com alterações significativas que exigem planejamento e testes cuidadosos.

A atualização da versão principal é unidirecional

A operação de atualização pode mover seu aplicativo do Flink 1.x para 2.2 com preservação de estado, mas você não pode voltar de 2.2 para 1.x com o estado 2.2. Se seu aplicativo ficar insalubre após a atualização, use a API Rollback para retornar à versão 1.x com seu estado 1.x original a partir do snapshot mais recente.

Pré-requisitos

Antes de começar sua atualização:

Entendendo seus caminhos de migração

Sua experiência de atualização depende da compatibilidade do seu aplicativo com o Flink 2.2. Compreender esses caminhos ajuda você a se preparar adequadamente e definir expectativas realistas.

Caminho 1: binário compatível e estado do aplicativo

O que esperar:

  • Invocar a operação de atualização

  • Conclua a migração para 2.2 com a transição do status do aplicativo: → → RUNNING UPDATING RUNNING

  • Preserve todo o estado do aplicativo sem perda ou reprocessamento de dados

  • Mesma experiência das migrações de versões secundárias

Ideal para: aplicativos sem estado ou aplicativos que usam serialização compatível (Avro, esquemas Protobuf compatíveis, sem coleções) POJOs

Caminho 2: incompatibilidades binárias

O que esperar:

  • Invocar a operação de atualização

  • A operação falha e revela a incompatibilidade binária por meio da API de operações e dos registros

  • Com a reversão automática ativada: os aplicativos são revertidos automaticamente em minutos sem sua intervenção

  • Com a reversão automática desativada: os aplicativos permanecem em execução sem processamento de dados; você reverte manualmente para a versão anterior

  • Depois que o binário for corrigido, use a UpdateApplication API para uma experiência semelhante ao Caminho 1

Ideal para: aplicativos removidos APIs que são detectados durante a inicialização do trabalho do Flink

Caminho 3: estado incompatível do aplicativo

O que esperar:

  • Invocar a operação de atualização

  • A migração parece ter sido bem-sucedida inicialmente

  • Os aplicativos entram em ciclos de reinicialização em segundos quando a restauração do estado falha

  • Detecte falhas por meio de CloudWatch métricas que mostram reinicializações contínuas

  • Invocar manualmente a operação Rollback

  • Retorne à produção em poucos minutos após o início da reversão

  • Analise Migração estadual sua inscrição

Ideal para: aplicativos com incompatibilidades de serialização de estado (POJOs com coleções, determinado estado serializado do Kryo)

nota

É altamente recomendável criar uma réplica do seu aplicativo de produção e testar cada uma das seguintes fases da atualização na réplica antes de seguir as mesmas etapas do seu aplicativo de produção.

Fase 1: Preparação

Atualizar o código do aplicativo

Atualize o código do seu aplicativo para ser compatível com o Flink 2.2:

  • Atualize as dependências do Flink para a versão 2.2.0 em seu ou pom.xml build.gradle

  • Atualize as dependências do conector para versões compatíveis com o Flink 2.2 (consulte) disponibilidade do conector

  • Remova o uso obsoleto da API:

    • Substitua a DataSet API por DataStream API ou API de tabela/SQL

    • Substitua o legacySourceFunction/SinkFunctionpor FLIP-27 Source e FLIP-143 Sink APIs

    • Substitua o uso da API Scala pela API Java

  • Atualização para o Java 17

Carregar código de aplicativo atualizado

  • Crie seu aplicativo JAR com dependências do Flink 2.2

  • Faça o upload para o Amazon S3 com um nome de arquivo diferente do seu JAR atual (por exemplo,) my-app-flink-2.2.jar

  • Observe o bucket e a chave do S3 para uso na etapa de atualização

Fase 2: ativar a reversão automática

A reversão automática permite que o Amazon Managed Service para Apache Flink reverta automaticamente para a versão anterior se a atualização falhar.

Verifique o status da reversão automática

Console de gerenciamento da AWS:

  1. Navegue até seu aplicativo

  2. Escolher configuração

  3. Em Configurações do aplicativo, verifique se a reversão do sistema está ativada

AWS CLI:

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

Ativar a reversão automática (se não estiver ativada)

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

Fase 3: tirar uma foto (opcional)

Se os instantâneos automáticos estiverem habilitados para seu aplicativo, você poderá pular esta etapa, caso contrário, tire um instantâneo do seu aplicativo para salvar o estado do seu aplicativo antes da atualização.

Tire um instantâneo do aplicativo em execução

Console de gerenciamento da AWS:

  1. Navegue até seu aplicativo

  2. Escolha instantâneos

  3. Escolha Criar instantâneo

  4. Insira um nome de instantâneo (por exemplo,pre-flink-2.2-upgrade)

  5. Selecione Criar

AWS CLI:

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

Verificar a criação do snapshot

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

Espere até que SnapshotStatus seja READY antes de continuar.

Fase 4: Atualizar o aplicativo

Você pode atualizar seu aplicativo Flink usando a UpdateApplicationação.

Você pode chamar a API UpdateApplication de várias maneiras:

  • Use o Console de gerenciamento da AWS

    • Acesse seu aplicativo no Console de gerenciamento da AWS.

    • Selecione Configurar.

    • Selecione o novo runtime e o snapshot a partir do qual você deseja começar, também conhecido como configuração de restauração. Use a configuração mais recente como configuração de restauração para iniciar o aplicativo a partir do snapshot mais recente. Aponte para o novo aplicativo atualizado JAR/zip no Amazon S3.

  • Use a AWS CLIupdate-applicationação.

  • Use CloudFormation.

    • Atualize o RuntimeEnvironment campo. Anteriormente, o CloudFormation excluía o aplicativo e criava um novo, fazendo com que seus snapshots e outros históricos do aplicativo fossem perdidos. Agora CloudFormation atualiza seu RuntimeEnvironment local e não exclui seu aplicativo.

  • Use o AWS SDK.

    • Consulte a documentação do SDK para obter a linguagem de programação de sua preferência. Consulte UpdateApplication.

Você pode realizar a atualização enquanto o aplicativo estiver no estado RUNNING ou enquanto o aplicativo estiver parado no estado READY. O Amazon Managed Service para Apache Flink valida a compatibilidade entre a versão original do tempo de execução e a versão do tempo de execução de destino. Essa verificação de compatibilidade é executada quando você executa UpdateApplication enquanto está no RUNNING estado ou na próxima, StartApplication se você atualiza enquanto está no READY estado.

Atualização do estado RUNNING

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" } } } }'

Atualização do 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: atualização do monitor

Verificação de compatibilidade

  • Use a API de operações para verificar o status da atualização. Se houver incompatibilidades binárias ou problemas com a inicialização do trabalho, a operação de atualização falhará com os registros.

  • Se a operação de atualização tiver sido bem-sucedida, mas o aplicativo estiver preso em ciclos de reinicialização, isso significa que o estado é incompatível com a nova versão do Flink ou que há um problema com o código atualizado. Análise Guia de compatibilidade estadual para atualizações do Flink 2.2 sobre como identificar problemas de incompatibilidade de estado.

Monitore a integridade do aplicativo

Estado do aplicativo:

  • O status do aplicativo deve ser alterado: RUNNINGUPDATINGRUNNING

  • Verifique o tempo de execução do aplicativo. Se for 2.2, a operação de atualização foi bem-sucedida.

  • Se seu aplicativo estiver ativoRUNNING, mas ainda estiver no tempo de execução antigo, a reversão automática foi iniciada. A API de operações mostrará a operação comoFAILED. Verifique os registros para encontrar a exceção em caso de falha.

Além disso, monitore essas métricas em CloudWatch:

Métrica de reinicialização:

  • numRestarts: Monitore reinicializações inesperadas — a atualização será bem-sucedida se numRestarts for zero uptime e/ou runningTime estiver aumentando.

Métricas do ponto de verificação:

  • lastCheckpointDuration: devem ser semelhantes aos valores de pré-atualização

  • numberOfFailedCheckpoints: Deve permanecer em 0

Fase 6: Validar o comportamento do aplicativo

Depois que o aplicativo estiver sendo executado no Flink 2.2:

Validação funcional

  • Verifique se os dados estão sendo lidos das fontes

  • Verifique se os dados estão sendo gravados em coletores

  • Verifique se a lógica de negócios produz os resultados esperados

  • Compare a saída com a linha de base de pré-atualização

Validação de desempenho

  • Monitore as métricas de latência (tempo end-to-end de processamento)

  • Monitore as métricas de produtividade (registros por segundo)

  • Monitore a duração e o tamanho do ponto de verificação

  • Monitore a utilização da memória e da CPU

Corra por mais de 24 horas

Permita que o aplicativo seja executado por pelo menos 24 horas em produção para garantir:

  • Sem vazamentos de memória

  • Comportamento estável do ponto de verificação

  • Sem reinicializações inesperadas

  • Taxa de transferência consistente

Fase 7: procedimentos de reversão

Se a atualização falhar ou o aplicativo estiver em execução, mas não estiver íntegro, volte para a versão anterior.

Reversão automática

Se a reversão automática estiver ativada e a atualização falhar durante a inicialização, o Amazon Managed Service para Apache Flink reverte automaticamente para a versão anterior.

Reversão manual

Se o aplicativo estiver em execução, mas não estiver íntegro, use a RollbackApplication API:

Console de gerenciamento da AWS:

  1. Navegue até seu aplicativo

  2. Escolha AçõesReverter

  3. Confirme a reversão

AWS CLI:

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

O que acontece durante a reversão:

  • O aplicativo é interrompido

  • O tempo de execução reverte para a versão anterior do Flink

  • O código do aplicativo é revertido para o JAR anterior

  • O aplicativo é reiniciado a partir do último snapshot bem-sucedido obtido antes do upgrade

Importante
  • Você não pode restaurar um instantâneo do Flink 2.2 no Flink 1.x

  • A reversão usa o instantâneo obtido antes da atualização

  • Sempre tire um instantâneo antes da atualização (Fase 3)

Próximas etapas

Em caso de dúvidas ou problemas durante a atualização, consulte Solucionar problemas do Managed Service for Apache Flink ou entre em contato com o AWS Support.