Verwaltung von Anwendungs-Backups mithilfe von Snapshots - Managed Service für Apache Flink

Amazon Managed Service für Apache Flink war zuvor als Amazon Kinesis Data Analytics für Apache Flink bekannt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwaltung von Anwendungs-Backups mithilfe von Snapshots

Ein Snapshot ist die Managed Service für Apache Flink-Implementierung eines Apache Flink Savepoint. Ein Snapshot ist ein vom Benutzer oder Service ausgelöstes, erstelltes und verwaltetes Backup des Anwendungsstatus. Informationen zu Apache Flink Savepoints finden Sie unter Savepoints in der Apache Flink-Dokumentation. Mithilfe von Snapshots können Sie eine Anwendung von einem bestimmten Snapshot des Anwendungsstatus aus neu starten.

Anmerkung

Wir empfehlen, dass Ihre Anwendung mehrmals täglich einen Snapshot erstellt, um einen ordnungsgemäßen Neustart mit den korrekten Statusdaten zu gewährleisten. Die richtige Häufigkeit für Ihre Snapshots hängt von der Geschäftslogik Ihrer Anwendung ab. Durch häufiges Erstellen von Snapshots können Sie neuere Daten wiederherstellen, was jedoch die Kosten erhöht und mehr Systemressourcen beansprucht.

In Managed Service für Apache Flink verwalten Sie Snapshots mit den folgenden API-Aktionen:

Informationen zur Beschränkung der Anzahl von Snapshots pro Anwendung finden Sie unter Kontingent. Wenn Ihre Anwendung das Limit für Snapshots erreicht, schlägt das manuelle Erstellen eines Snapshots mit einer LimitExceededException fehl.

Managed Service für Apache Flink löscht Snapshots niemals. Sie müssen die Snapshots mit der Aktion DeleteApplicationSnapshot manuell löschen.

Um beim Starten einer Anwendung einen gespeicherten Snapshot des Anwendungsstatus zu laden, verwenden Sie den ApplicationRestoreConfiguration-Parameter der StartApplication- oder UpdateApplication-Aktion.

Automatische Erstellung von Snapshots

Wenn true in der ApplicationSnapshotConfigurationfür die Anwendung die Option aktiviert SnapshotsEnabled ist, erstellt und verwendet Managed Service for Apache Flink automatisch Snapshots, wenn die Anwendung aktualisiert, skaliert oder gestoppt wird, um eine Semantik für die Verarbeitung exakt einmal bereitzustellen.

Anmerkung

Die Einstellung von ApplicationSnapshotConfiguration::SnapshotsEnabled auf false führt bei Anwendungsupdates zu Datenverlust.

Anmerkung

Managed Service für Apache Flink löst Zwischen-Savepoints während der Snapshoterstellung aus. Bei Flink Version 1.15 oder höher haben Zwischen-Savepoints keine Nebenwirkungen mehr. Siehe Savepoints auslösen.

Automatisch erstellte Snapshots haben die folgenden Eigenschaften:

  • Der Snapshot wird vom Service verwaltet, aber Sie können den Snapshot mithilfe der Aktion sehen. ListApplicationSnapshots Automatisch erstellte Snapshots werden auf Ihr Snapshot-Limit angerechnet.

  • Wenn Ihre Anwendung das Snapshot-Limit überschreitet, schlagen manuell erstellte Snapshots fehl, aber der Managed Service für Apache Flink-Service erstellt weiterhin erfolgreich Snapshots, wenn die Anwendung aktualisiert, skaliert oder gestoppt wird. Sie müssen Snapshots mithilfe der DeleteApplicationSnapshotAktion manuell löschen, bevor Sie weitere Snapshots manuell erstellen können.

Wiederherstellung aus einem Snapshot, der inkompatible Statusdaten enthält

Da Snapshots Informationen über Operatoren enthalten, kann das Wiederherstellen von Zustandsdaten aus einem Snapshot für einen Operator, der sich seit der vorherigen Anwendungsversion geändert hat, zu unerwarteten Ergebnissen führen. Eine Anwendung schlägt fehl, wenn sie versucht, Zustandsdaten aus einem Snapshot wiederherzustellen, der nicht dem aktuellen Operator entspricht. Die fehlerhafte Anwendung bleibt entweder im UPDATING- oder STOPPING-Status hängen.

Um einer Anwendung die Wiederherstellung aus einem Snapshot zu ermöglichen, der inkompatible Statusdaten enthält, setzen Sie true mithilfe der UpdateApplicationAktion den AllowNonRestoredState Parameter FlinkRunConfigurationauf.

Wenn eine Anwendung aus einem veralteten Snapshot wiederhergestellt wird, tritt das folgende Verhalten auf:

  • Operator hinzugefügt: Wenn ein neuer Operator hinzugefügt wird, hat der Savepoint keine Statusdaten für den neuen Operator. Es tritt kein Fehler auf und es ist nicht nötig, AllowNonRestoredState festzulegen.

  • Operator gelöscht: Wenn ein vorhandener Operator gelöscht wird, enthält der Savepoint Statusdaten für den fehlenden Operator. Es tritt ein Fehler auf, sofern AllowNonRestoredState nicht auf true festgelegt ist.

  • Operator geändert: Wenn kompatible Änderungen vorgenommen werden, z. B. wenn der Typ eines Parameters in einen kompatiblen Typ geändert wird, kann die Anwendung die Daten aus dem veralteten Snapshot wiederherstellen. Weitere Informationen zur Wiederherstellung aus Snapshots finden Sie unter Savepoints in der Apache Flink-Dokumentation. Eine Anwendung, die Apache Flink Version 1.8 oder höher verwendet, kann möglicherweise aus einem Snapshot mit einem anderen Schema wiederhergestellt werden. Eine Anwendung, die Apache Flink Version 1.6 verwendet, kann nicht wiederhergestellt werden. Für two-phase-commit Datenspeicher empfehlen wir die Verwendung eines System-Snapshots (SWs) anstelle eines vom Benutzer erstellten Snapshots (). CreateApplicationSnapshot

    Für Flink löst Managed Service für Apache Flink während der Snapshot-Erstellung Zwischen-Savepoints aus. Ab Flink 1.15 haben Zwischen-Savepoints keine Nebenwirkungen mehr. Siehe Savepoints auslösen.

Wenn Sie eine Anwendung fortsetzen müssen, die mit vorhandenen Savepoint-Daten nicht kompatibel ist, empfehlen wir, die Wiederherstellung aus dem Snapshot zu überspringen, indem Sie den ApplicationRestoreType Aktionsparameter auf setzen. StartApplicationSKIP_RESTORE_FROM_SNAPSHOT

Weitere Informationen darüber, wie Apache Flink mit inkompatiblen Statusdaten umgeht, finden Sie unter State Schema Evolution in der Apache Flink-Dokumentation.

Beispiele für Snapshot-APIs

Dieser Abschnitt enthält Beispielanfragen für API-Aktionen zur Verwendung von Snapshots mit einer Anwendung. Weitere Informationen zur Verwendung einer JSON-Datei als Eingabe für API-Aktionen finden Sie unter Beispielcode für Managed Service für Apache Flink API.

Aktivieren Sie Snapshots für eine Anwendung

In der folgenden Beispiel-Anfrage für die Aktion UpdateApplication werden Tags für eine Anwendung aktiviert:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }

Snapshot erstellen

Die folgende Beispielanforderung für die CreateApplicationSnapshot-Aktion erstellt einen Snapshot des aktuellen Anwendungsstatus:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }

Listet Snapshots für eine Anwendung auf

In der folgenden Beispielanforderung für die ListApplicationSnapshots-Aktion werden die ersten 50 Snapshots für den aktuellen Anwendungsstatus aufgeführt:

{ "ApplicationName": "MyApplication", "Limit": 50 }

Listet Details für einen Anwendungs-Snapshot auf

In der folgenden Beispiel-Anfrage für die Aktion DescribeApplicationSnapshot werden Details für eines bestimmten Anwendungssnapshot aufgelistet:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }

Löschen eines Snapshots

Die folgende Beispielanforderung für die DeleteApplicationSnapshot-Aktion löscht einen zuvor gespeicherten Snapshot. Sie können den SnapshotCreationTimestamp-Wert entweder mit ListApplicationSnapshots oder DeleteApplicationSnapshot abrufen:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }

Starten Sie eine Anwendung mithilfe eines benannten Snapshots neu

Mit der folgenden Beispielanforderung für die StartApplication-Aktion wird die Anwendung mit dem gespeicherten Status eines bestimmten Snapshots gestartet:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }

Starten Sie eine Anwendung mit dem neuesten Snapshot neu

Mit der folgenden Beispielanforderung für die StartApplication-Aktion wird die Anwendung mit dem neuesten Snapshot gestartet:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }

Starten Sie eine Anwendung neu, die keinen Snapshot verwendet

Mit der folgenden Beispielanforderung für die StartApplication-Aktion wird die Anwendung gestartet, ohne den Anwendungsstatus zu laden, auch wenn ein Snapshot vorhanden ist:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }