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:
Resenha Guia de compatibilidade estadual para atualizações do Flink 2.2
Garanta que você tenha um ambiente não produtivo para testes
Documente a configuração e as dependências atuais do aplicativo
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: → →
RUNNINGUPDATINGRUNNINGPreserve 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.xmlbuild.gradleAtualize 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 legacy
SourceFunction/SinkFunctionpor FLIP-27 Source e FLIP-143 Sink APIsSubstitua 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.jarObserve 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:
Navegue até seu aplicativo
Escolher configuração
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:
Navegue até seu aplicativo
Escolha instantâneos
Escolha Criar instantâneo
Insira um nome de instantâneo (por exemplo,
pre-flink-2.2-upgrade)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 CLI
update-applicationação. Use CloudFormation.
Atualize o
RuntimeEnvironmentcampo. 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 seuRuntimeEnvironmentlocal 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:
RUNNING→UPDATING→RUNNINGVerifique o tempo de execução do aplicativo. Se for 2.2, a operação de atualização foi bem-sucedida.
Se seu aplicativo estiver ativo
RUNNING, 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 senumRestartsfor zerouptimee/ourunningTimeestiver aumentando.
Métricas do ponto de verificação:
lastCheckpointDuration: devem ser semelhantes aos valores de pré-atualizaçãonumberOfFailedCheckpoints: 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:
Navegue até seu aplicativo
Escolha Ações → Reverter
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.