Trabajos reiniciables

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

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 los clústeres de Dataproc para garantizar 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 mantiene dentro de la configuración de max_failures_per_hour y max_failures_total.

Consideraciones del diseño del trabajo

  • Diseña tus trabajos para controlar fácilmente el reinicio. Por ejemplo, si tu trabajo se escribe en un directorio, se adapta a la posibilidad de que el directorio exista cuando se reinicie el trabajo.
  • Los trabajos de Apache Spark Streaming 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 que se puede reiniciar un trabajo por hora y la cantidad máxima de reintentos cuando envías el trabajo a través de la herramienta de línea de comandos de gcloud de gcloud CLI, la API de REST de Dataproc o la consola de Google Cloud.

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 como 10 y max-failures-per-hour como 5.

gcloud

Especifica la cantidad máxima de veces por hora que un trabajo se puede reiniciar (el valor máximo es de 10 reintentos por hora) o la cantidad máxima de reintentos (el valor máximo es de 240 reintentos en total) mediante las marcas --max-failures-per-hour y --max-failures-total, 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 de 10 reintentos por hora) o la cantidad máxima de reintentos (el valor máximo es de 240 reintentos en total) mediante la configuración de los campos Job.JobScheduling maxFailuresPerHour y/o maxFailuresTotal, 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 Envía un trabajo de Dataproc (el valor máximo es 10 veces por hora). Por el momento, la configuración total de reinicios máximos no está disponible en la consola de Google Cloud.