Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis 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à.
Gestione dei backup delle applicazioni tramite istantanee
Uno snapshot è l'implementazione nel servizio gestito per Apache Flink di un savepoint di Apache Flink. Uno snapshot è un backup dello stato dell'applicazione attivato, creato e gestito dall'utente o dal servizio. Per informazioni su Apache Flink Savepoints, consulta Savepoints nella documentazione di Apache Flink.
Nota
È consigliabile che l'applicazione crei uno snapshot più volte al giorno per riavviarsi correttamente con i dati di stato corretti. La frequenza corretta per l'acquisizione degli snapshot dipende dalla logica di business dell'applicazione. L'acquisizione di istantanee frequenti consente di ripristinare i dati più recenti, ma aumenta i costi e richiede più risorse di sistema.
In Managed Service for Apache Flink, è possibile gestire le istantanee utilizzando le seguenti azioni: API
Per il limite nel numero di snapshot per ogni applicazione, consulta Servizio gestito per Apache Flink e quota di notebook Studio. Se l'applicazione raggiunge il limite di snapshot, non è possibile creare manualmente uno snapshtot con una LimitExceededException
.
Il servizio gestito per Apache Flink non elimina gli snapshot. Questi snapshot dovranno essere eliminati manualmente utilizzando l'operazione DeleteApplicationSnapshot
.
Per caricare uno snapshot salvato dello stato dell'applicazione all'avvio di un'applicazione, utilizza il parametro ApplicationRestoreConfiguration
della StartApplication
o l'operazione UpdateApplication
.
Questo argomento contiene le sezioni seguenti:
Gestisci la creazione automatica di istantanee
Se SnapshotsEnabled
è impostato su true
in ApplicationSnapshotConfigurationfor the application, Managed Service for Apache Flink crea e utilizza automaticamente le istantanee quando l'applicazione viene aggiornata, ridimensionata o interrotta per fornire una semantica di elaborazione esatta.
Nota
L'impostazione di ApplicationSnapshotConfiguration::SnapshotsEnabled
su false
comporterà la perdita di dati durante gli aggiornamenti dell'applicazione.
Nota
Il servizio gestito per Apache Flink attiva i savepoint intermedi durante la creazione degli snapshot. A partire dalla versione 1.15 di Flink, i savepoint intermedi non producono più effetti collaterali. Vedi Attivazione dei punti di salvataggio.
Gli snapshot creati in modo automatico hanno le seguenti qualità:
-
L'istantanea è gestita dal servizio, ma è possibile visualizzarla utilizzando l'azione. ListApplicationSnapshots Gli snapshot creati automaticamente vengono conteggiati in base al limite di snapshot.
-
Se l'applicazione supera il limite di snapshot, gli snapshot creati manualmente avranno esito negativo, ma il servizio gestito per Apache Flink continuerà a creare snapshot con successo quando l'applicazione verrà aggiornata, dimensionata o interrotta. È necessario eliminare manualmente le istantanee utilizzando l' DeleteApplicationSnapshotazione prima di crearne altre manualmente.
Ripristina da un'istantanea che contiene dati di stato incompatibili
Poiché gli snapshot contengono informazioni sugli operatori, il ripristino dei dati di stato da uno snapshot per un operatore che è stato modificato rispetto alla versione precedente dell'applicazione potrebbe avere risultati imprevisti. Un'applicazione genera un errore se tenta di ripristinare i dati di stato da uno snapshot che non corrisponde all'operatore corrente. L'applicazione con errori rimarrà bloccata nello stato STOPPING
o UPDATING
.
Per consentire il ripristino di un'applicazione da un'istantanea che contiene dati di stato incompatibili, impostate il AllowNonRestoredState
parametro FlinkRunConfigurationto true
utilizzando l'azione. UpdateApplication
Quando un'applicazione viene ripristinata da uno snapshot obsoleto, si verifica il seguente comportamento:
Operatore aggiunto: se viene aggiunto un nuovo operatore, il savepoint non ha dati di stato per il nuovo operatore. Non si verificherà alcun errore e non è necessario impostare
AllowNonRestoredState
.Operatore eliminato: se viene eliminato un operatore esistente, il savepoint contiene i dati di stato per l'operatore mancante. Si verificherà un errore a meno che
AllowNonRestoredState
non sia impostato sutrue
.Operatore modificato: se vengono apportate modifiche compatibili, ad esempio la modifica del tipo di parametro in un tipo compatibile, l'applicazione può eseguire il ripristino dallo snapshot obsoleto. Per ulteriori informazioni sul ripristino da istantanee, consulta Savepoints
nella documentazione di Apache Flink. Un'applicazione che utilizza Apache Flink versione 1.8 o successiva può essere ripristinata da uno snapshot con uno schema diverso. Un'applicazione che utilizza Apache Flink versione 1.6 non può essere ripristinata. Per two-phase-commit i sink, consigliamo di utilizzare lo snapshot di sistema (SW) anziché lo snapshot creato dall'utente (). CreateApplicationSnapshot Per Flink, il servizio gestito per Apache Flink attiva savepoint intermedi durante la creazione degli snapshot. A partire da Flink 1.15, i savepoint intermedi non producono più effetti collaterali. Consulta Attivazione dei savepoint
.
Se è necessario riprendere un'applicazione incompatibile con i dati del savepoint esistenti, si consiglia di saltare il ripristino dall'istantanea impostando il parametro dell'azione su. ApplicationRestoreType
StartApplicationSKIP_RESTORE_FROM_SNAPSHOT
Per ulteriori informazioni sul modo in cui Apache Flink gestisce i dati di stato incompatibili, consulta Evoluzione dello schema di stato
Consulta gli esempi di istantanee API
Questa sezione include esempi di richieste di API azioni per l'utilizzo di istantanee con un'applicazione. Per informazioni su come utilizzare un JSON file come input per un'APIazione, vedereCodice di esempio di Managed Service per Apache Flink API.
Abilitare le istantanee per un'applicazione
La seguente richiesta di esempio per l'operazione UpdateApplication
abilita gli snapshot per un'applicazione:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }
Creazione di una snapshot
La seguente richiesta di esempio per l'operazione CreateApplicationSnapshot
crea uno snapshot dello stato corrente dell'applicazione:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Elenca le istantanee di un'applicazione
La seguente richiesta di esempio per l'operazione ListApplicationSnapshots
elenca i primi 50 snapshot per lo stato corrente dell'applicazione:
{ "ApplicationName": "MyApplication", "Limit": 50 }
Elenca i dettagli di un'istantanea dell'applicazione
La seguente richiesta di esempio per l'operazione DescribeApplicationSnapshot
elenca i dettagli relativi a uno snapshot specifico per l'applicazione:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Eliminazione di uno snapshot
La seguente richiesta di esempio per l'operazione DeleteApplicationSnapshot
elimina uno snapshot salvato in precedenza. È possibile ottenere il valore SnapshotCreationTimestamp
utilizzando ListApplicationSnapshots
o DeleteApplicationSnapshot
:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }
Riavviare un'applicazione utilizzando un'istantanea denominata
La seguente richiesta di esempio per l'operazione StartApplication
avvia l'applicazione utilizzando lo stato salvato da uno snapshot specifico:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }
Riavviare un'applicazione utilizzando l'istantanea più recente
La seguente richiesta di esempio per l'operazione StartApplication
avvia l'applicazione utilizzando lo snapshot più recente:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Riavviare un'applicazione senza utilizzare alcuna istantanea
La seguente richiesta di esempio per l'operazione StartApplication
avvia l'applicazione senza caricare lo stato dell'applicazione, anche se è presente uno snapshot:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }