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) oder die maximale Anzahl der Wiederholungen insgesamt (max. 240 Wiederholungsversuche) oder beides.
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
0beendet 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_hourodermax_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_hourundmax_failures_totalnicht ü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 wie viele Versuche insgesamt beim Senden des Jobs über die gcloud-Befehlszeile der gcloud CLI, die Dataproc REST API oder dieGoogle Cloud consolebestehen werden.
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
}
}
}
Konsole
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. Die Einstellung für die maximale Anzahl der Neustarts insgesamt ist in der Google Cloud -Konsole nicht verfügbar.