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:
Revisione Modifiche e deprecazioni sostanziali
Recensione Guida alla compatibilità dello stato per gli aggiornamenti di Flink 2.2
Assicurati di disporre di un ambiente non di produzione per i test
Documenta la configurazione e le dipendenze correnti dell'applicazione
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: → →
RUNNINGUPDATINGRUNNINGConserva 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.xmlbuild.gradleAggiorna 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 precedente
SourceFunction/SinkFunctioncon le API FLIP-27 Source e FLIP-143 SinkSostituisci 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.jarAnnota 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:
Accedi alla tua applicazione
Scegli Configuration (Configurazione)
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:
Accedi alla tua applicazione
Scegli Istantanee
Scegli Crea istantanea
Inserisci il nome di un'istantanea (ad esempio,)
pre-flink-2.2-upgradeScegli 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-applicationUsa CloudFormation.
Aggiorna il
RuntimeEnvironmentcampo. 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:
RUNNING→UPDATING→RUNNINGControlla il runtime dell'applicazione. Se è 2.2, l'operazione di aggiornamento è avvenuta con successo.
Se l'applicazione è attiva
RUNNINGma è ancora nel runtime precedente, è stato avviato il rollback automatico. L'API delle operazioni mostrerà l'operazione come.FAILEDControlla 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 senumRestartsè pari a zerouptimeorunningTimeè in aumento.
Metriche dei checkpoint:
lastCheckpointDuration: dovrebbero essere simili ai valori precedenti all'aggiornamentonumberOfFailedCheckpoints: 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:
Accedi alla tua applicazione
Scegli Azioni → Ripristina
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