Job riavviabili

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. Job riavviabili sono particolarmente utili per job a lunga esecuzione e flussi di dati. Ad esempio, puoi riavviare i job Spark in esecuzione sui cluster Dataproc per garantire la resilienza dei job in modalità flusso.

Semantica dei job riavviabili

Alla segnalazione dell'esito positivo o negativo dei job si applicano le seguenti semantiche:

  • Un job viene segnalato come completo 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 il max_failures_per_hour o l'impostazione max_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 di max_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 streaming Apache Spark che eseguono il checkpoint possono essere riavviati dopo un errore, ma non segnaleranno lo stato di Yarn.

Creazione e utilizzo di job riavviabili

Puoi specificare il numero massimo di volte in un'ora che un job può essere riavviato e il numero massimo di nuovi tentativi totali al momento di inviare il job. tramite gcloud CLI gcloud, lo strumento a riga di comando API REST Dataproc o la classe 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 all'ora che un job può essere riavviato (il valore massimo è 10 nuovi tentativi all'ora) e/o il numero massimo di tentativi (il valore massimo è di 240 nuovi tentativi totali) utilizzando --max-failures-per-hour e --max-failures-total, rispettivamente.

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 all'ora che un job può essere riavviato (il valore massimo è 10 nuovi tentativi all'ora) e/o il numero massimo di tentativi (il valore massimo è di 240 nuovi tentativi totali) impostando Job.JobScheduling maxFailuresPerHour e/o maxFailuresTotal, rispettivamente .

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 di riavvii massimi all'ora nella pagina 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.