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 instruções detalhadas para atualizar seu aplicativo Amazon Managed Service para Apache Flink do Flink 1.x para o Flink 2.2. Esta é uma atualização de versão importante com mudanças 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 a preservação do estado, mas você não pode voltar do 2.2 para o 1.x com o estado 2.2. Se seu aplicativo ficar sem integridade 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 seu upgrade:
Resenha Guia de compatibilidade estadual para atualizações do Flink 2.2
Certifique-se de ter um ambiente que não seja de produção para testes
Documente a configuração e as dependências atuais do seu aplicativo
Entendendo seus caminhos de migração
Sua experiência de atualização depende da compatibilidade do seu aplicativo com o Flink 2.2. Entender 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:
Invoque 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, POJOs sem coleções)
Caminho 2: Incompatibilidades binárias
O que esperar:
Invoque 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 estado de execução sem processamento de dados; você reverte manualmente para a versão mais antiga
Depois que o binário for corrigido, use a UpdateApplication API para uma experiência semelhante ao Path 1
Ideal para: Aplicativos que usam APIs removidas que são detectadas durante a inicialização da tarefa do Flink
Caminho 3: estado de aplicativo incompatível
O que esperar:
Invoque 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 de reversão
Retorne à produção em minutos após iniciar a reversão
Migração estadualRevise sua inscrição
Ideal para: Aplicativos com incompatibilidades de serialização de estado (POJOs com coleções, determinado estado) Kryo-serialized
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.1 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:
Substituir DataSet API por DataStream API ou tabela API/SQL
Substitua o legado
SourceFunction//pelasSinkFunctionAPIs FLIP-27 Source e FLIP-143 SinkSubstitua 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
Auto-rollback permite que o Amazon Managed Service para Apache Flink reverta automaticamente para a versão anterior se a atualização falhar.
Verifique o status de 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 habilitada)
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 essa 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 Snapshots
Escolha Criar instantâneo
Insira o nome de um snapshot (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 instantâneo
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 UpdateApplication açã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. Uso 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 seu aplicativoRuntimeEnvironmentno 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 for Apache Flink valida a compatibilidade entre a versão de tempo de execução original e a versão de tempo de execução de destino. Essa verificação de compatibilidade é executada quando você executa UpdateApplication enquanto estiver no RUNNING estado ou no próximo, StartApplication se você fizer o upgrade enquanto estiver 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" } } } }'
Atualize 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 Operations 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 nos loops 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. Analise Guia de compatibilidade estadual para atualizações do Flink 2.2 como identificar problemas de incompatibilidade de estado.
Monitore a integridade do aplicativo
Estado do aplicativo:
O status do aplicativo deve mudar:
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 no tempo de execução mais 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 de falha.
Além disso, monitore essas métricas em CloudWatch:
Métrica de reinicialização:
numRestarts: Monitore reinicializações inesperadas — a atualização é bem-sucedida senumRestartsfor zerouptimee/ourunningTimeestiver aumentando.
Métricas do checkpoint:
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 de processamento de ponta a ponta)
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, reverta 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 reverterá 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 é revertido para a versão anterior do Flink
O código do aplicativo é revertido para o JAR anterior
O aplicativo é reiniciado a partir do último instantâneo 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 de fazer o upgrade (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 Suporte.