Trabajos reiniciables

De forma predeterminada, los trabajos de Dataproc no se reiniciarán automáticamente en caso de error. Mediante la configuración opcional, puedes establecer que los trabajos se reinicien en caso de falla. Cuando configuras un trabajo para que se reinicie, especificas el número máximo de reintentos por hora (el valor máximo es 10 reintentos por hora) o la cantidad máxima de reintentos (el valor máximo es 240 en total) reintentos)

El reinicio de los trabajos mitiga los tipos comunes de falla de trabajo, incluidos los problemas de memoria insuficiente y los reinicios inesperados de la máquina virtual de Compute Engine. Los trabajos reiniciables son especialmente útiles en los casos de transmisión y de larga duración. Por ejemplo, puedes reiniciar los trabajos de transmisión de Spark que se ejecutan en clústeres de Dataproc para asegurarte de que los trabajos de transmisión sean resilientes.

Semántica de los trabajos reiniciables

La siguiente semántica se aplica al informe de la falla o el éxito de los trabajos:

  • Un trabajo se informa como exitoso si el controlador finaliza con el código 0.
  • Un trabajo se informa con errores en los siguientes casos:
    • El controlador finaliza con un código distinto de cero más de 4 veces en 10 minutos.
    • El controlador finaliza con un código distinto de cero y superó la configuración de max_failures_per_hour o max_failures_total.
  • Un trabajo se reiniciará si el controlador finaliza con un código distinto de cero, no produce hiperpaginación y se encuentra dentro de las configuraciones max_failures_per_hour y max_failures_total.

Consideraciones sobre el diseño del trabajo

  • Diseña tus trabajos para controlar fácilmente el reinicio. Por ejemplo, si tu trabajo escribe en un directorio, tu trabajo se adaptará a la posibilidad de que el directorio exista cuando se reinicie el trabajo.
  • Los trabajos de transmisión de Apache Spark que pasan el punto de control se pueden reiniciar luego de la falla, pero no informarán un estado Yarn.

Cómo crear y usar trabajos reiniciables

Puedes especificar la cantidad máxima de veces por hora que un trabajo se puede reiniciar y la cantidad máxima de reintentos cuando lo envíes mediante la línea de comandos de gcloud del SDK de Cloud. la API de REST de Dataproc o Google Cloud Console.

Ejemplo: Si deseas permitir que tu trabajo vuelva a intentarlo hasta 10 veces, pero no más de 5 veces en una hora, configura max-failures-total en 10 y max-failures-per-hour en 5 ,

gcloud

Especifica la cantidad máxima de veces que se puede reiniciar un trabajo por hora (el valor máximo es 10 reintentos por hora) o la cantidad máxima de reintentos (el valor máximo es 240 reintentos en total) con {101 }--max-failures-per-hour y--max-failures-total marcas, respectivamente.

gcloud dataproc jobs submit job type \
    --region=region \
    --max-failures-per-hour=number \
    --max-failures-total=number \
    ... other args

API de REST

Especifica la cantidad máxima de veces que se puede reiniciar un trabajo por hora (el valor máximo es 10 reintentos por hora) o la cantidad máxima de reintentos (el valor máximo es 240 reintentos en total) mediante la configuración {101] }Job.JobScheduling maxFailuresPerHour o maxFailuresTotalcampos, respectivamente .

Ejemplo

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

Puedes enviar trabajos reiniciables si especificas los reinicios máximos por hora en la página Enviar un trabajo (Submit a job) (el valor máximo es 10 veces por hora). Por el momento, la configuración de reinicio máximo máximo no está disponible en Cloud Console.