Checkpoint-Fehler für Apache-Beam-Anwendung - 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.

Checkpoint-Fehler für Apache-Beam-Anwendung

Wenn Ihre Beam-Anwendung auf 0 ms shutdownSourcesAfterIdleMseingestellt ist, können Checkpoints möglicherweise nicht ausgelöst werden, da sich die Aufgaben im Status "" FINISHED befinden. In diesem Abschnitt werden Symptome und Lösungen für diesen Zustand beschrieben.

Symptom

Rufen Sie die CloudWatch Anwendungsprotokolle Ihres Managed Service for Apache Flink auf und überprüfen Sie, ob die folgende Protokollmeldung protokolliert wurde. Die folgende Protokollmeldung weist darauf hin, dass der Checkpoint nicht ausgelöst werden konnte, da einige Aufgaben abgeschlossen wurden.

{ "locationInformation": "org.apache.flink.runtime.checkpoint.CheckpointCoordinator.onTriggerFailure(CheckpointCoordinator.java:888)", "logger": "org.apache.flink.runtime.checkpoint.CheckpointCoordinator", "message": "Failed to trigger checkpoint for job your job ID since some tasks of job your job ID has been finished, abort the checkpoint Failure reason: Not all required tasks are currently running.", "threadName": "Checkpoint Timer", "applicationARN": your application ARN, "applicationVersionId": "5", "messageSchemaVersion": "1", "messageType": "INFO" }

Dies ist auch im Flink-Dashboard zu finden, wo einige Aufgaben den Status "FINISHED" erreicht haben und Checkpointing nicht mehr möglich ist.

Aufgaben im Status "" FINISHED

Ursache

shutdownSourcesAfterIdleMs ist eine Beam-Konfigurationsvariable, die Quellen herunterfährt, die für die konfigurierte Zeit von Millisekunden inaktiv waren. Sobald eine Quelle heruntergefahren wurde, ist Checkpointing nicht mehr möglich. Dies könnte zu einem Checkpoint-Fehler führen.

Eine der Ursachen dafür, dass Aufgaben in den Zustand "FINISHED" wechseln, ist, wenn sie auf 0 ms gesetzt shutdownSourcesAfter IdleMs ist, was bedeutet, dass Aufgaben, die sich im Leerlauf befinden, sofort heruntergefahren werden.

Lösung

Um zu verhindern, dass Aufgaben sofort in den Status "FINISHED" wechseln, setzen Sie shutdownSourcesAfter IdleMs den Wert auf Lang. MAX_VALUE. Es gibt zwei Methoden dafür:

  • Option 1: Wenn Ihre Beam-Konfiguration auf der Konfigurationsseite Ihrer Managed Service for Apache Flink-Anwendung festgelegt ist, können Sie ein neues Schlüsselwertpaar hinzufügen, um shutdpwnSourcesAfteridle Ms wie folgt festzulegen:

    Auf Lang shutdownSourcesAfter IdleMs setzen. MAX_ VALUE
  • Option 2: Wenn Ihre Strahlkonfiguration in Ihrer JAR Datei festgelegt ist, können Sie sie shutdownSourcesAfter IdleMs wie folgt einstellen:

    FlinkPipelineOptions options = PipelineOptionsFactory.create().as(FlinkPipelineOptions.class); // Initialize Beam Options object options.setShutdownSourcesAfterIdleMs(Long.MAX_VALUE); // set shutdownSourcesAfterIdleMs to Long.MAX_VALUE options.setRunner(FlinkRunner.class); Pipeline p = Pipeline.create(options); // attach specified options to Beam pipeline