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
retryPolicyConfiguration
ist 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
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
derretryPolicyConfiguration
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 dermaxAttempts
Wert außerhalb des gültigen Bereichs liegt. Der gültigemaxAttempts
-Bereich liegt zwischen 1 und 2.147.483.647 (32-Bit-Ganzzahl), dem Bereich, der für diebackOffLimit
-Konfigurationseinstellung von Kubernetes unterstützt wird. Weitere Informationen finden Sie unter Pod-Backoff-Fehlerrichtliniein 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 ListJobRuns
und DescribeJobRun
APIsanzeigen. 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
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.