Gestione dei backup delle applicazioni tramite istantanee - Servizio gestito per Apache Flink

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. Utilizzando le istantanee, è possibile riavviare un'applicazione da una particolare istantanea dello stato dell'applicazione.

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.

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 su true.

  • 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 nella documentazione di Apache Flink.

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" } } }