Per impostazione predefinita, i job Dataproc non vengono riavviati automaticamente in caso di errore. Utilizzando le impostazioni facoltative, puoi impostare i job in modo che si riavviino in caso di errore. Quando imposti un job da riavviare, specifica il numero massimo di tentativi all'ora (valore massimo 10 tentativi all'ora) e/o il numero massimo di tentativi totali (valore massimo 240 tentativi totali).
Il riavvio dei job riduce i tipi comuni di errore dei job, inclusi i problemi di esaurimento della memoria e riavvii imprevisti delle macchine virtuali Compute Engine. I job riavviabili sono particolarmente utili per i job di lunga durata e in streaming. Ad esempio, puoi riavviare i job di streaming Spark in esecuzione sui cluster Dataproc per assicurarti che siano resilienti.
Semantica dei job riavviabili
Alla segnalazione dell'esito positivo o negativo dei job si applicano le seguenti semantiche:
- Un job viene segnalato come riuscito se il driver termina con il codice
0
. - Un job viene segnalato come non riuscito se:
- Il driver termina con un codice diverso da zero più di quattro volte in 10 minuti.
- Il driver termina con un codice diverso da zero e ha superato il
max_failures_per_hour
o l'impostazionemax_failures_total
.
- Un job verrà riavviato se il driver esce con un codice diverso da zero,
thrashing ed è all'interno di
max_failures_per_hour
e Impostazioni dimax_failures_total
.
Considerazioni sulla progettazione del job
- Progetta i job in modo che gestiscano in modo corretto il riavvio. Ad esempio, se il job scrive in una directory, deve tenere conto della possibilità che la directory esista al riavvio del job.
- i job di flussi di dati Apache Spark che il checkpoint possono essere riavviati dopo l'errore ma non segnaleranno lo stato del titolo.
Creazione e utilizzo di job riavviabili
Puoi specificare il numero massimo di volte in cui un job può essere riavviato ogni ora e il numero massimo di tentativi totali quando invii il job tramite lo strumento a riga di comando gcloud CLI gcloud, l'API REST Dataproc o la console Google Cloud.
Esempio:se vuoi consentire al job di riprovare fino a 10 volte, ma non più di
5 volte in un'ora, imposta max-failures-total
su 10 e max-failures-per-hour
su 5.
gcloud
Specifica il numero massimo di volte in cui un job può essere riavviato ogni ora
(il valore massimo è 10 tentativi ogni ora) e/o il numero massimo di tentativi
totali (valore massimo 240 tentativi totali) utilizzando rispettivamente i flag
--max-failures-per-hour
e --max-failures-total
.
gcloud dataproc jobs submit job type \ --region=region \ --max-failures-per-hour=number \ --max-failures-total=number \ ... other args
API REST
Specifica il numero massimo di volte in cui un job può essere riavviato ogni ora
(valore massimo 10 tentativi ogni ora) e/o il numero massimo di tentativi
totali (valore massimo 240 tentativi totali) impostando rispettivamente i campi
Job.JobScheduling
maxFailuresPerHour
e/o maxFailuresTotal
.
Esempio
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
Puoi inviare job riavviabili specificando il valore max riavvii all'ora in Invia un job di Dataproc. (il valore massimo è 10 volte all'ora). Attualmente, il numero massimo di riavvii totali non è disponibile nella console Google Cloud.