View a markdown version of this page

Aggiornamento a Flink 2.2: guida completa - Servizio gestito per Apache Flink

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento a Flink 2.2: guida completa

Questa guida fornisce istruzioni dettagliate per aggiornare l'applicazione Amazon Managed Service for Apache Flink da Flink 1.x a Flink 2.2. Si tratta di un importante aggiornamento della versione con modifiche sostanziali che richiedono un'attenta pianificazione e test.

L'aggiornamento della versione principale è unidirezionale

L'operazione di aggiornamento può spostare l'applicazione da Flink 1.x a 2.2 con conservazione dello stato, ma non è possibile tornare indietro da 2.2 a 1.x con lo stato 2.2. Se l'applicazione diventa malsana dopo l'aggiornamento, utilizzate l'API Rollback per tornare alla versione 1.x con lo stato 1.x originale dell'ultima istantanea.

Prerequisiti

Prima di iniziare l'aggiornamento:

Comprendere i percorsi di migrazione

L'esperienza di aggiornamento dipende dalla compatibilità dell'applicazione con Flink 2.2. La comprensione di questi percorsi vi aiuta a prepararvi in modo appropriato e a stabilire aspettative realistiche.

Percorso 1: binario compatibile e stato dell'applicazione

Cosa aspettarsi:

  • Richiama l'operazione di aggiornamento

  • Completa la migrazione alla 2.2 con la transizione dello stato dell'applicazione: → → RUNNING UPDATING RUNNING

  • Conserva tutto lo stato dell'applicazione senza perdita o rielaborazione dei dati

  • Stessa esperienza delle migrazioni di versioni minori

Ideale per: applicazioni stateless o applicazioni che utilizzano serializzazione compatibile (Avro, schemi Protobuf compatibili, POJO senza raccolte)

Percorso 2: incompatibilità binarie

Cosa aspettarsi:

  • Richiama l'operazione di aggiornamento

  • L'operazione non riesce ed evidenzia l'incompatibilità binaria tramite l'API e i log di Operations

  • Con il rollback automatico abilitato: le applicazioni vengono ripristinate automaticamente in pochi minuti senza l'intervento dell'utente

  • Con il rollback automatico disabilitato: le applicazioni rimangono in esecuzione senza elaborazione dei dati; è possibile ripristinare manualmente la versione precedente

  • Una volta corretto il file binario, utilizza l'UpdateApplication API per un'esperienza simile a Path 1

Ideale per: applicazioni che utilizzano API rimosse rilevate durante l'avvio del processo di Flink

Percorso 3: Stato dell'applicazione non compatibile

Cosa aspettarsi:

  • Richiama l'operazione di aggiornamento

  • Inizialmente la migrazione sembra avere successo

  • Le applicazioni entrano in cicli di riavvio in pochi secondi quando il ripristino dello stato non riesce

  • Rileva gli errori tramite le CloudWatch metriche che mostrano i riavvii continui

  • Richiama manualmente l'operazione Rollback

  • Ritorno alla produzione entro pochi minuti dall'avvio del rollback

  • Esamina la tua Migrazione statale candidatura

Ideale per: applicazioni con incompatibilità di serializzazione a livello di stato (POJO con raccolte, determinati stati) Kryo-serialized

Nota

Si consiglia vivamente di creare una replica dell'applicazione di produzione e testare ciascuna delle seguenti fasi dell'aggiornamento sulla replica prima di seguire gli stessi passaggi per l'applicazione di produzione.

Fase 1: preparazione

Aggiornamento del codice dell'applicazione

Aggiorna il codice dell'applicazione per renderlo compatibile con Flink 2.2:

  • Aggiorna le dipendenze di Flink alla versione 2.2.1 nel tuo o pom.xml build.gradle

  • Aggiorna le dipendenze del connettore alle versioni compatibili con Flink 2.2 (vedi) Disponibilità del connettore

  • Rimuovi l'utilizzo obsoleto delle API:

    • Sostituisci DataSet l'API con l'API o la DataStream tabella API/SQL

    • Sostituisci la versione precedenteSourceFunction/SinkFunctioncon le API FLIP-27 Source e FLIP-143 Sink

    • Sostituisci l'utilizzo dell'API Scala con l'API Java

  • Aggiornamento a Java 17

Carica il codice dell'applicazione aggiornato

  • Crea il JAR della tua applicazione con le dipendenze di Flink 2.2

  • Carica su Amazon S3 con un nome di file diverso da quello del JAR corrente (ad esempio,) my-app-flink-2.2.jar

  • Annota il bucket e la chiave S3 da utilizzare nella fase di aggiornamento

Fase 2: abilitare il rollback automatico

Auto-rollback consente ad Amazon Managed Service for Apache Flink di tornare automaticamente alla versione precedente se l'aggiornamento non riesce.

Verifica lo stato del rollback automatico

Console di gestione AWS:

  1. Accedi alla tua applicazione

  2. Scegli Configuration (Configurazione)

  3. In Impostazioni dell'applicazione, verifica che il rollback del sistema sia abilitato

AWS CLI:

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

Abilita il rollback automatico (se non è abilitato)

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

Fase 3: Scatta un'istantanea (opzionale)

Se le istantanee automatiche sono abilitate per la tua applicazione, puoi saltare questo passaggio, altrimenti scatta un'istantanea dell'applicazione per salvarne lo stato prima dell'aggiornamento.

Scatta un'istantanea dall'applicazione in esecuzione

Console di gestione AWS:

  1. Accedi alla tua applicazione

  2. Scegli Istantanee

  3. Scegli Crea istantanea

  4. Inserisci il nome di un'istantanea (ad esempio,) pre-flink-2.2-upgrade

  5. Scegli Crea

AWS CLI:

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

Verifica la creazione dell'istantanea

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

Attendi che SnapshotStatus sia pronto READY prima di procedere.

Fase 4: Aggiornamento dell'applicazione

È possibile aggiornare l'applicazione Flink utilizzando l'UpdateApplicationazione.

Puoi chiamare l'UpdateApplicationAPI in diversi modi:

  • Usa il Console di gestione AWS.

    • Vai alla pagina della tua app in Console di gestione AWS.

    • Scegli Configura.

    • Seleziona il nuovo runtime e l'istantanea da cui vuoi iniziare, nota anche come configurazione di ripristino. Utilizza l'impostazione più recente come configurazione di ripristino per avviare l'app dall'istantanea più recente. Individua la nuova applicazione aggiornata JAR/zip su Amazon S3.

  • Usa l'azione. AWS CLI update-application

  • Usa CloudFormation.

    • Aggiorna il RuntimeEnvironment campo. In precedenza, CloudFormation eliminava l'applicazione e ne creava una nuova, causando la perdita delle istantanee e di altra cronologia dell'app. Ora CloudFormation aggiorna l'RuntimeEnvironmentapplicazione esistente e non elimina l'applicazione.

  • Usa l' AWS SDK.

    • Consulta la documentazione SDK per il linguaggio di programmazione di tua scelta. Per informazioni, consulta UpdateApplication.

È possibile eseguire l'aggiornamento mentre l'applicazione è in RUNNING stato o mentre l'applicazione è interrotta. READY Amazon Managed Service for Apache Flink convalida la compatibilità tra la versione di runtime originale e la versione di runtime di destinazione. Questo controllo di compatibilità viene eseguito quando esegui l'operazione UpdateApplication mentre sei nello RUNNING stato o alla successiva StartApplication se esegui l'aggiornamento mentre sei nello stato. READY

Aggiornamento dallo stato 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" } } } }'

Aggiornamento dallo stato 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: aggiornamento del monitor

Verifica della compatibilità

  • Utilizza l'API Operations per verificare lo stato dell'aggiornamento. In caso di incompatibilità binarie o problemi con l'avvio del processo, l'operazione di aggiornamento avrà esito negativo con i log.

  • Se l'operazione di aggiornamento è riuscita ma l'applicazione è bloccata nei cicli di riavvio, significa che lo stato è incompatibile con la nuova versione di Flink o che c'è un problema con il codice aggiornato. Scopri come identificare Guida alla compatibilità dello stato per gli aggiornamenti di Flink 2.2 i problemi di incompatibilità tra stati.

Monitora lo stato delle applicazioni

Stato dell'applicazione:

  • Lo stato dell'applicazione dovrebbe passare: RUNNINGUPDATINGRUNNING

  • Controlla il runtime dell'applicazione. Se è 2.2, l'operazione di aggiornamento è avvenuta con successo.

  • Se l'applicazione è attiva RUNNING ma è ancora nel runtime precedente, è stato avviato il rollback automatico. L'API delle operazioni mostrerà l'operazione come. FAILED Controlla i log per trovare l'eccezione in caso di errore.

Inoltre, monitora queste metriche in CloudWatch:

Metrica di riavvio:

  • numRestarts: monitora i riavvii imprevisti: l'aggiornamento ha esito positivo se numRestarts è pari a zero uptime o runningTime è in aumento.

Metriche dei checkpoint:

  • lastCheckpointDuration: dovrebbero essere simili ai valori precedenti all'aggiornamento

  • numberOfFailedCheckpoints: Dovrebbe rimanere a 0

Fase 6: convalida del comportamento dell'applicazione

Dopo che l'applicazione è in esecuzione su Flink 2.2:

Convalida funzionale

  • Verifica che i dati vengano letti dalle fonti

  • Verifica che i dati vengano scritti nei sink

  • Verifica che la logica aziendale produca i risultati previsti

  • Confronta l'output con la baseline precedente all'aggiornamento

Convalida delle prestazioni

  • Monitora le metriche di latenza (tempo di elaborazione end-to-end)

  • Monitora le metriche di produttività (record al secondo)

  • Monitora la durata e le dimensioni dei checkpoint

  • Monitora l'utilizzo della memoria e della CPU

Funziona per più di 24 ore

Consenti all'applicazione di funzionare per almeno 24 ore in produzione per garantire:

  • Nessuna perdita di memoria

  • Comportamento stabile ai checkpoint

  • Nessun riavvio imprevisto

  • Produttività costante

Fase 7: procedure di rollback

Se l'aggiornamento non riesce o l'applicazione è in esecuzione ma non è integra, ripristina la versione precedente.

Rollback automatico

Se il rollback automatico è abilitato e l'aggiornamento non riesce durante l'avvio, Amazon Managed Service for Apache Flink torna automaticamente alla versione precedente.

Rollback manuale

Se l'applicazione è in esecuzione ma non è integra, utilizza l'RollbackApplicationAPI:

Console di gestione AWS:

  1. Accedi alla tua applicazione

  2. Scegli Azioni Ripristina

  3. Conferma il rollback

AWS CLI:

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

Cosa succede durante il rollback:

  • L'applicazione si arresta

  • Il runtime torna alla versione precedente di Flink

  • Il codice dell'applicazione ritorna al JAR precedente

  • L'applicazione si riavvia dall'ultima istantanea scattata con successo prima dell'aggiornamento

Importante
  • Non è possibile ripristinare un'istantanea di Flink 2.2 su Flink 1.x

  • Rollback utilizza l'istantanea scattata prima dell'aggiornamento

  • Scatta sempre un'istantanea prima dell'aggiornamento (Fase 3)

Fasi successive

Per domande o problemi durante l'aggiornamento, consulta Risoluzione dei problemi relativi al servizio gestito per Apache Flink o contatta l'assistenza. AWS