Ciclo de vida de una tarea de Dataproc

En esta página se describe la secuencia de pasos que se siguen para enviar, ejecutar y completar un trabajo de Dataproc. También se explica cómo limitar el número de trabajos y depurarlos.

Flujo de tareas de Dataproc

  1. El usuario envía una tarea a Dataproc.
  2. El trabajo espera a que lo adquiera el agente dataproc.
    • Si se adquiere el trabajo, JobStatus.State se marca como RUNNING.
    • Si no se adquiere el trabajo debido a un fallo del agente, un fallo de la red de Compute Engine u otra causa, el trabajo se marca como ERROR.
  3. Una vez que el agente adquiere un trabajo, verifica que haya suficientes recursos disponibles en el nodo maestro del clúster de Dataproc para iniciar el controlador.
    • Si no hay suficientes recursos disponibles, el trabajo se retrasa (se limita). JobStatus.Substate muestra el trabajo como QUEUED y Job.JobStatus.details proporciona información sobre la causa del retraso.
  4. Si hay recursos suficientes disponibles, el agente dataproc inicia el proceso del controlador de trabajo.
    • En esta fase, normalmente hay una o varias aplicaciones que se ejecutan en Apache Hadoop YARN. Sin embargo, es posible que las aplicaciones de Yarn no se inicien hasta que el controlador termine de analizar los directorios de Cloud Storage o de realizar otras tareas de inicio.
  5. El agente dataproc envía periódicamente actualizaciones a Dataproc sobre el progreso de las tareas, las métricas de los clústeres y las aplicaciones de Yarn asociadas a la tarea (consulta Monitorización y depuración de tareas).
  6. Se han completado las solicitudes de Yarn.
    • La tarea sigue notificándose como RUNNING mientras el controlador realiza las tareas de finalización, como materializar colecciones.
    • Si se produce un error no controlado o no detectado en el hilo principal, el controlador puede quedar en un estado zombie (marcado como RUNNING sin información sobre la causa del error).
  7. El conductor sale. El agente dataproc informa a Dataproc de que se ha completado.
    • Dataproc informa de que la tarea está DONE.

Simultaneidad de tareas

Puedes configurar el número máximo de tareas simultáneas de Dataproc con la propiedad de clúster dataproc:dataproc.scheduler.max-concurrent-jobs al crear un clúster. Si no se define el valor de esta propiedad, el límite superior de los trabajos simultáneos se calcula como max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5). masterMemoryMb se determina en función del tipo de máquina de la VM maestra. masterMemoryMbPerJob es 1024 de forma predeterminada, pero se puede configurar al crear el clúster con la propiedad dataproc:dataproc.scheduler.driver-size-mb del clúster.

Siguientes pasos