Job riavviabili

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 o max_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 e max_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.