Neustartfähige Jobs

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 oder max_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 und max_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 wie viele Versuche insgesamt beim Senden des Jobs über die gcloud-Befehlszeile des Cloud SDK, der Dataproc REST API oder der Google Cloud Console bestehen 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
}
}
}

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 Cloud Console nicht verfügbar.