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.
Wenn Ihre Beam-Anwendung auf 0 ms konfiguriert ist, können Checkpoints möglicherweise nicht ausgelöst werden, da sich die Aufgaben im Status „ABGESCHLOSSEN“ befinden. shutdownSourcesAfterIdleMs
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 jobyour 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 kann auch im Flink-Dashboard gefunden werden, wo einige Aufgaben den Zustand „ABGESCHLOSSEN“ erreicht haben und Checkpointing nicht mehr möglich ist.

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
Einer der Gründe dafür, dass Aufgaben in den Status „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 „FERTIG“ wechseln, legen Sie den Wert shutdownSourcesAfter IdleMs auf LONG.MAX_VALUE fest. 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 Ms wie folgt festzulegen: shutdpwnSourcesAfteridle
-
Option 2: Wenn Ihre Beam-Konfiguration in Ihrer JAR-Datei festgelegt ist, können Sie sie wie folgt einstellen: shutdownSourcesAfter IdleMs
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