Per impostazione predefinita, i job Dataproc non verranno riavviati automaticamente in caso di errore. Utilizzando le impostazioni facoltative, puoi impostare i job in modo che vengano riavviati in caso di errore. Quando imposti un job per il riavvio, specifichi il numero massimo di nuovi tentativi all'ora (il valore massimo è 10 tentativi all'ora) e/o il numero massimo di nuovi tentativi totali (il valore massimo è 240 nuovi tentativi totali).
Il riavvio dei job riduce i tipi comuni di errori dei job, tra cui problemi di esaurimento della memoria e riavvii imprevisti delle macchine virtuali di Compute Engine. I job riavviabili sono particolarmente utili per i job a lunga esecuzione e i flussi di dati. Ad esempio, puoi riavviare i job di inserimento di flussi di dati Spark in esecuzione su cluster Dataproc per garantire che i job di inserimento di flussi siano resilienti.
semantica del job riavviabile
La seguente semantica si applica ai report relativi al successo o al fallimento dei job:
- Un job viene segnalato come riuscita 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 4 volte in 10 minuti.
- Il driver termina con un codice diverso da zero e ha superato l'impostazione
max_failures_per_hour
omax_failures_total
.
- Un job viene riavviato se il driver esce con un codice diverso da zero, non è in fase di
limitazione e rientra nelle impostazioni di
max_failures_per_hour
emax_failures_total
.
Considerazioni sulla progettazione del lavoro
- Progetta i tuoi job per gestire agevolmente il riavvio. Ad esempio, se il job scrive in una directory, è possibile che la directory esista al riavvio del job.
- I job di flussi di dati Apache Spark che possono essere riavviati dopo l'errore, ma non segnaleranno lo stato Yarn.
Creazione e utilizzo di job riavviabili
Puoi specificare il numero massimo di volte in cui un job può essere riavviato all'ora e il numero massimo di nuovi tentativi totali quando il job viene inviato tramite lo strumento a riga di comando gcloud di gcloud CLI, 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 all'ora (il valore massimo è 10 nuovi tentativi all'ora) e/o il numero massimo di tentativi totali (il valore massimo è 240 nuovi 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 all'ora (il valore massimo è 10 nuovi tentativi all'ora) e/o il numero massimo di nuovi tentativi totali (il 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 numero massimo di riavvii all'ora nella pagina Invio di un job di Dataproc (il valore massimo è 10 volte all'ora). Al momento, l'impostazione relativa al numero massimo di riavvii non è disponibile nella console Google Cloud.