La vida de un trabajo de Cloud Dataproc

En esta página, se describe la secuencia de pasos involucrados con el envío, la ejecución y la finalización de un trabajo de Cloud Dataproc. También analiza la regulación y depuración del trabajo.

Flujo de trabajos de Cloud Dataproc

  1. El usuario envía el trabajo a Cloud Dataproc.
  2. JobStatus.State está marcado como PENDING.
  3. El trabajo espera ser adquirido por el agente dataproc
      .
    • Si se adquiere el trabajo, JobStatus.State se marca como RUNNING.
    • Si no lo adquiere debido a una falla del agente, una falla de la red de Compute Engine u otra causa, el trabajo se marca como ERROR.
  4. Una vez que el agente adquiere el trabajo, verifica que existen suficientes recursos disponibles en el nodo principal del clúster de Cloud Dataproc para iniciar el controlador.
    • Si no hay disponibles recursos suficientes, el trabajo se retrasa (limita). JobStatus.Substate muestra el trabajo como QUEUED y Job.JobStatus.details proporciona información sobre la causa de la demora.
  5. Si hay suficientes recursos disponibles, el agente dataproc inicia el proceso del controlador del trabajo.
    • En esta etapa, generalmente hay una o más aplicaciones activas en Apache Hadoop YARN. Sin embargo, es posible que las aplicaciones YARN no se inicien hasta que el controlador finalice el análisis de los directorios de Cloud Storage o la ejecución de otras tareas de trabajo de inicio.
  6. El agente dataproc envía actualizaciones periódicas a Cloud Dataproc sobre el progreso del trabajo, las métricas del clúster y las aplicaciones asociadas de Yarn con el trabajo (consulta Supervisión y depuración de trabajos).
  7. Aplicaciones de YARN completas.
  8. El trabajo sigue considerándose como RUNNING mientras que el controlador realiza cualquier tarea de finalización del trabajo, como la materialización de las colecciones.
  9. Una falla no controlada o no capturada en el subproceso principal puede dejar el controlador en estado zombi (marcado como RUNNING sin información sobre la causa de la falla).
  10. El controlador sale. El agente dataproc informa la finalización a Cloud Dataproc.
    • Cloud Dataproc considera el trabajo como DONE.

Supervisión y depuración del trabajo

Usa la herramienta de línea de comandos de gcloud, la API de REST de Cloud Dataproc y Google Cloud Console para analizar y depurar trabajos de Cloud Dataproc.

Comando de gcloud

Para examinar el estado de un trabajo activo:

    gcloud dataproc jobs describe job-id
    

Para ver el resultado del controlador del trabajo, consulta Cómo acceder al resultado del controlador de trabajo.

API de REST

Llama jobs.get para examinar los campos JobStatus.State, JobStatus.Substate, JobStatus.details y YarnApplication del trabajo.

Console

Para ver el resultado del controlador del trabajo, consulta Cómo acceder al resultado del controlador de trabajo.

Para ver el registro del agente dataproc en Stackdriver Logging, selecciona Clúster de Cloud Dataproc→Nombre del clúster→UUID del clúster (Cloud Dataproc Cluster→Cluster Name→Cluster UUID) del selector del clúster del visor de registros.

Luego, usa el selector de registros para seleccionar los registros google.dataproc.agent.

Consulte los registros de trabajos en Stackdriver

Si un trabajo falla, puedes acceder a los registros de trabajo en Stackdriver Logging.

Cómo determinar quién envió el trabajo

Cómo buscar los detalles de un trabajo mostrará quién envió el trabajo en el campo submittedBy. Por ejemplo, este resultado de trabajo muestra que user@domain envió el trabajo de ejemplo a un clúster.

    ...
    placement:
      clusterName: cluster-name
      clusterUuid: cluster-uuid
    reference:
      jobId: job-uuid
      projectId: project
    status:
      state: DONE
      stateStartTime: '2018-11-01T00:53:37.599Z'
    statusHistory:
    - state: PENDING
      stateStartTime: '2018-11-01T00:33:41.387Z'
    - state: SETUP_DONE
      stateStartTime: '2018-11-01T00:33:41.765Z'
    - details: Agent reported job success
      state: RUNNING
      stateStartTime: '2018-11-01T00:33:42.146Z'
    submittedBy: user@domain