Warum schlägt der Checkpoint in meiner Amazon-Kinesis-Data-Analytics-Anwendung fehl?

Zuletzt aktualisiert: 25.2.2022

Der Checkpoint oder Speicherpunkt in meiner Amazon-Kinesis-Data-Analytics-Anwendung schlägt fehl.

Kurzbeschreibung

Checkpointing ist die Methode, die zur Implementierung der Fehlertoleranz in Amazon Kinesis Data Analytics für Apache Flink verwendet wird. Wenn Ihre Anwendung nicht optimiert oder ordnungsgemäß bereitgestellt wird, kann dies zu Checkpoint-Fehlern führen.

Einige der Hauptursachen für Checkpoint-Ausfälle sind folgende:

  • Für Rocks DB liest Apache Flink Dateien aus dem lokalen Speicher und schreibt in den persistenten Remote-Speicher, also Amazon Simple Storage Service (Amazon S3). Die Leistung der lokalen Festplatte und die Upload-Rate können sich auf das Checkpointing auswirken und zu Checkpoint-Fehlern führen.
  • Speicherpunnkt- und Checkpoint-Status werden in einem serviceeigenen Amazon-S3-Bucket gespeichert, der vollständig von AWS verwaltet wird. Auf diese Zustände wird immer dann zugegriffen, wenn eine Anwendung ausfällt. Vorübergehende Serverfehler oder Latenz in diesem S3-Bucket können zu Checkpoint-Fehlern führen.
  • Eine Prozessfunktion, die Sie erstellt haben und bei der die Funktion während des Checkpoints mit einer externen Ressource wie Amazon DynamoDB kommuniziert, kann zu Checkpoint-Fehlern führen.
  • Ein Fehler aufgrund der Serialisierung des Zustands, z. B. eine Nichtübereinstimmung des Serialisierers mit den eingehenden Daten, kann zu Checkpoint-Fehlern führen.
  • Die Anzahl der Kinesis Processing Units (KPUs), die für die Anwendung bereitgestellt wurden, reicht möglicherweise nicht aus. Verwenden Sie die folgende Berechnung, um die zugewiesenen KPUs zu finden:
    Zugewiesene KPUs für die Anwendung = Parallelism/ParallelismPerKPU
  • Größere Anwendungszustandsgrößen können zu einer Erhöhung der Checkpoint-Latenz führen. Dies liegt daran, dass der Task-Manager mehr Zeit benötigt, um den Checkpoint zu speichern, was zu einer Ausnahme bei unzureichendem Arbeitsspeicher führen kann.
  • Eine verzerrte Zustandsverteilung könnte dazu führen, dass ein Task-Manager im Vergleich zu anderen Task-Managern mehr Daten verarbeitet. Selbst wenn ausreichend KPUs (Ressourcen) bereitgestellt werden, können ein oder mehrere überlastete Task-Manager eine Ausnahme mit unzureichendem Arbeitsspeicher verursachen.
  • Eine hohe Kardinalität zeigt an, dass die eingehenden Daten eine große Anzahl eindeutiger Schlüssel enthalten. Wenn der Auftrag den KeyBy-Operator zum Partitionieren der eingehenden Daten verwendet und der Schlüssel, auf dem die Daten partitioniert werden, eine hohe Kardinalität aufweist, kann ein langsames Checkpointing auftreten. Dies könnte letztendlich zu Checkpoint-Fehlern führen.

Auflösung

  • Die Größe Ihres Anwendungsstatus kann schnell ansteigen, was zu einer Erhöhung der Größe und Dauer des Checkpoints führt. Sie können diese Werte mithilfe der Amazon-CloudWatch-Metriken lastCheckpointDuration und lastCheckpointSize überwachen. Weitere Informationen finden Sie unter Anwendungsmetriken.
  • Erhöhen Sie die Parallelität des Operators, der mehr Daten verarbeitet. Sie können die Parallelität für einen einzelnen Operator, eine Datenquelle oder eine Daten-Sink definieren, indem Sie die setParallelism() -Methode aufrufen.
  • Optimieren Sie die Werte von Parallelism und ParallelismPerKPU für eine optimale Auslastung der KPUs. Stellen Sie sicher, dass die automatische Skalierung für Ihre Amazon-Kinesis-Data-Analytics-Anwendung nicht ausgeschaltet ist. Mit dem Wert des maxParallelism-Parameters können Sie auf eine gewünschte Anzahl von KPUs skalieren. Weitere Informationen finden Sie unter Anwendungsskalierung in Kinesis Data Analytics für Apache Flink.
  • Definieren Sie die TTL für den Zustand, um sicherzustellen, dass der Zustand regelmäßig bereinigt wird.
  • Optimieren Sie den Code, um eine bessere Partitionierungsstrategie zu ermöglichen. Sie können die Neuverteilung der Partitionierung verwenden, um die Daten gleichmäßig zu verteilen. Bei dieser Methode wird ein Rundlaufverfahren für die Verteilung verwendet.
  • Optimieren Sie den Code, um die Fenstergröße zu reduzieren, sodass die Kardinalität der Anzahl der Schlüssel in diesem Fenster reduziert wird.

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?