Verwenden von Richtlinien für die Wiederholung von Aufträgen - Amazon EMR

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.

Verwenden von Richtlinien für die Wiederholung von Aufträgen

In EMR den EKS Versionen 6.9.0 und höher von Amazon können Sie eine Wiederholungsrichtlinie für Ihre Auftragsausführungen festlegen. Richtlinien für Wiederholungen bewirken, dass ein Auftrags-Treiber-Pod automatisch neu gestartet wird, wenn er fehlschlägt oder gelöscht wird. Dies macht Spark-Streaming-Aufträge mit langer Laufzeit widerstandsfähiger gegenüber Ausfällen.

Festlegen einer Wiederholungsrichtlinie für einen Auftrag

Um eine Wiederholungsrichtlinie zu konfigurieren, geben Sie ein RetryPolicyConfiguration Feld mit dem an. StartJobRunAPI Eine Beispiel-retryPolicyConfiguration wird hier gezeigt:

aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.9.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py", "entryPointArguments": [ "2" ], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --retry-policy-configuration '{ "maxAttempts": 5 }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'
Anmerkung

retryPolicyConfigurationist erst ab Version AWS CLI 1.27.68 verfügbar. Informationen zur Aktualisierung AWS CLI auf die neueste Version finden Sie unter Installation oder Aktualisierung der neuesten Version von AWS CLI

Konfigurieren Sie das maxAttempts-Feld so, wie oft der Aufgaben-Treiber-Pod maximal neu gestartet werden soll, wenn er ausfällt oder gelöscht wird. Das Ausführungsintervall zwischen zwei Wiederholungsversuchen des Auftrag-Treibers ist ein exponentielles Wiederholungsintervall von (10 Sekunden, 20 Sekunden, 40 Sekunden …), das auf 6 Minuten begrenzt ist, wie in der Kubernetes-Dokumentation beschrieben.

Anmerkung

Jede weitere Ausführung des Job-Treibers wird als weitere Auftragsausführung in Rechnung gestellt und unterliegt der EKSPreisgestaltung von EMR Amazon.

Wiederholungsrichtlinien-Konfigurationswerte

  • Standard-Wiederholungsrichtlinie für einen Auftrag: StartJobRun beinhaltet eine Wiederholungsrichtlinie, die standardmäßig auf einen maximalen Versuch festgelegt ist. Sie können die Wiederholungs-Richtlinie wie gewünscht konfigurieren.

    Anmerkung

    Wenn maxAttempts der retryPolicyConfiguration auf 1 gesetzt ist, bedeutet dies, dass bei einem Fehler keine erneuten Versuche unternommen werden, den Treiber-Pod aufzurufen.

  • Deaktivieren der Wiederholungsrichtlinie für einen Job: Um eine Wiederholungsrichtlinie zu deaktivieren, setzen Sie den Wert für maximale Versuche auf 1. retryPolicyConfiguration

    "retryPolicyConfiguration": { "maxAttempts": 1 }
  • maxAttempts Für einen Job innerhalb des gültigen Bereichs festgelegt: Der StartJobRun Aufruf schlägt fehl, wenn der maxAttempts Wert außerhalb des gültigen Bereichs liegt. Der gültige maxAttempts-Bereich liegt zwischen 1 und 2.147.483.647 (32-Bit-Ganzzahl), dem Bereich, der für die backOffLimit-Konfigurationseinstellung von Kubernetes unterstützt wird. Weitere Informationen finden Sie unter Pod-Backoff-Fehlerrichtlinie in der Kubernetes-Dokumentation. Falls der maxAttempts-Wert ungültig ist, wird folgende Fehlermeldung zurückgegeben:

    { "message": "Retry policy configuration's parameter value of maxAttempts is invalid" }

Abrufen eines Status einer Wiederholungsrichtlinie für einen Auftrag

Sie können den Status der Wiederholungsversuche für einen Job mit dem ListJobRunsund DescribeJobRunAPIsanzeigen. Sobald Sie einen Auftrag mit aktivierter Konfiguration der Wiederholungsrichtlinie anfordern, enthalten die ListJobRun- und DescribeJobRun-Antworten und den Status der Wiederholungsrichtlinie im RetryPolicyExecution-Feld. Darüber hinaus enthält die DescribeJobRun-Antwort die Angaben RetryPolicyConfiguration, die in der StartJobRun-Anfrage für den Auftrag eingegeben wurden.

Beispielantworten

ListJobRuns response
{ "jobRuns": [ ... ... "retryPolicyExecution" : { "currentAttemptCount": 2 } ... ... ] }
DescribeJobRun response
{ ... ... "retryPolicyConfiguration": { "maxAttempts": 5 }, "retryPolicyExecution" : { "currentAttemptCount": 2 }, ... ... }

Diese Felder sind nicht sichtbar, wenn die Wiederholungsrichtlinie für den Auftrag deaktiviert ist, wie weiter unten in Wiederholungsrichtlinien-Konfigurationswerte beschrieben.

Überwachen eines Auftrags mit einer Wiederholungsrichtlinie

Wenn Sie eine Wiederholungsrichtlinie aktivieren, wird für jeden erstellten Jobtreiber ein CloudWatch Ereignis generiert. Um diese Ereignisse zu abonnieren, richten Sie mit dem folgenden Befehl eine CloudWatch Ereignisregel ein:

aws events put-rule \ --name cwe-test \ --event-pattern '{"detail-type": ["EMR Job Run New Driver Attempt"]}'

Das Ereignis gibt Informationen zu den Auftragstreibern newDriverPodName, newDriverCreatedAt dem previousDriverFailureMessage-Zeitstempel und den currentAttemptCount-Auftragstreibern zurück. Diese Ereignisse werden nicht erzeugt, wenn die Wiederholungsrichtlinie deaktiviert ist.

Weitere Informationen darüber, wie Sie Ihren Job mithilfe von CloudWatch Ereignissen überwachen können, finden Sie unterÜberwachen Sie Jobs mit Amazon CloudWatch Events.

Suchen nach Protokollen für Treiber und Ausführer

Die Namen der Treiber-Pods folgen dem Format spark-<job id>-driver-<random-suffix>. Dasselbe random-suffix wird zu den Namen der Ausführer-Pods hinzugefügt, die der Treiber erzeugt. Wenn Sie random-suffix verwenden, können Sie Protokolle für einen Treiber und die zugehörigen Ausführer finden. Der random-suffix ist nur vorhanden, wenn die Wiederholungsrichtlinie für den Auftrag aktiviert ist; andernfalls fehlt random-suffix.

Weitere Informationen zur Konfiguration von Aufträgen mit Überwachungskonfiguration für die Protokollierung finden Sie unter Eine Spark-Anwendung ausführen.