Dataproc-Jobs werden nach einem Fehler nicht standardmäßig neu gestartet. Mit optionalen Einstellungen können Sie festlegen, dass Jobs nach einem Fehler neu gestartet werden. Wenn Sie einen Job für einen Neustart konfigurieren, geben Sie die maximale Anzahl der Versuche pro Stunde ein (max. 10 Wiederholungen pro Stunde) und/oder die maximale Anzahl der Wiederholungen insgesamt (max. 240 Wiederholungsversuche).
Durch einen Neustart können häufige Jobfehler behoben werden, wie z. B. Fehler aufgrund fehlenden Speichers und eines unerwarteten Neustarts von virtuellen Compute Engine-Maschinen. Neustartfähige Jobs sind insbesondere für Jobs mit langer Laufzeit und Streaming-Jobs sinnvoll. Beispielsweise kann mit Neustarts von Spark-Streaming-Jobs, die auf Dataproc-Clustern ausgeführt werden, sichergestellt werden, dass die Streaming-Jobs stabil sind.
Semantik neustartfähiger Jobs
Mit der folgenden Semantik werden Erfolg und Fehler von Jobs gemeldet:
- Ein Job gilt als erfolgreich, wenn der Treiber mit dem Code
0
beendet wird. - Ein Job gilt in folgenden Fällen als fehlgeschlagen:
- Der Treiber wird innerhalb von zehn Minuten mindestens viermal mit einem Code ungleich null beendet.
- Der Treiber wird mit einem Code ungleich null beendet und hat die Einstellung
max_failures_per_hour
odermax_failures_total
überschritten.
- Ein Job wird neu gestartet, wenn der Treiber mit einem Code ungleich null beendet wird, nicht "flattert" und die Einstellungen
max_failures_per_hour
undmax_failures_total
nicht überschreitet.
Überlegungen zum Jobdesign
- Entwerfen Sie Ihre Jobs so, dass Neustarts reibungslos bewältigt werden können. Wenn der Job beispielsweise in ein Verzeichnis schreibt, entspricht dies der Möglichkeit, dass das Verzeichnis beim Neustart des Jobs vorhanden ist.
- Apache Spark-Streaming-Jobs mit Checkpoint-Erstellung können nach einem Fehler neu gestartet werden. Diese Jobs melden jedoch keinen Yarn-Status.
Neustartfähige Jobs erstellen und verwenden
Sie können angeben, wie oft ein Job pro Stunde neu gestartet werden kann und die maximale Anzahl der Gesamtwiederholungsversuche beim Senden des Jobs über die gcloud CLI gcloud-Befehlszeilentool, das Dataproc REST API oder die Google Cloud Console:
Beispiel:Wenn Sie möchten, dass Ihr Job bis zu 10-mal, aber nicht mehr als fünfmal in einer Stunde wiederholen kann, setzen Sie max-failures-total
auf 10 und max-failures-per-hour
auf 5.
gcloud
Geben Sie an, wie oft ein Job pro Stunde neu gestartet werden kann (der maximale Wert ist 10 Wiederholungen pro Stunde) und/oder die maximale Anzahl der Wiederholungen insgesamt (max. 240 Wiederholungsversuche) mit --max-failures-per-hour
und --max-failures-total
Flags.
gcloud dataproc jobs submit job type \ --region=region \ --max-failures-per-hour=number \ --max-failures-total=number \ ... other args
REST API
Geben Sie die maximale Anzahl an Neustarts pro Stunde (max. 10 Wiederholungen pro Stunde) und/oder die maximale Anzahl der Wiederholungen insgesamt an. Der Höchstwert beträgt 240 Wiederholungen. Legen Sie dazu Job.JobScheduling
maxFailuresPerHour
und/oder
maxFailuresTotal
fest.
Beispiel
POST /v1/projects/project-id/regions/us-central1/jobs:submit/ { "projectId": "project-id", "job": { "placement": { "clusterName": "example-cluster" }, "reference": { "jobId": "cea7ae0b...." }, "sparkJob": { "args": [ "1000" ], "mainClass": "org.apache.spark.examples.SparkPi", "jarFileUris": [ "file:///usr/lib/spark/examples/jars/spark-examples.jar" ] }, "scheduling": { "maxFailuresPerHour": 5 "maxFailuresTotal": 10 } } }
Console
Sie können neustartfähige Jobs senden, indem Sie auf der Cloud Dataproc-Seite Job senden einen Wert für Max. Neustarts pro Stunde angeben. Der Höchstwert ist zehnmal pro Stunde. Derzeit ist die Einstellung für die maximale Anzahl der Neustarts insgesamt in der Google Cloud Console nicht verfügbar.