El ciclo de vida de un trabajo de 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 Dataproc. También analiza la regulación y depuración del trabajo.

Flujo de trabajos de Dataproc

  1. El usuario envía el trabajo a Dataproc.
  2. El trabajo espera ser adquirido por el agente dataproc.
    • Si lo adquiere, 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.
  3. Una vez que el agente adquiere el trabajo, verifica que existen suficientes recursos disponibles en el nodo principal del clúster de 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 del retraso.
  4. 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.
  5. El agente dataproc envía actualizaciones periódicas a Dataproc sobre el progreso del trabajo, las métricas del clúster y las aplicaciones Yarn asociadas con el trabajo (consulta Supervisión y depuración de trabajos).
  6. Aplicaciones de YARN completas.
    • 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.
    • 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).
  7. El controlador sale. El agente dataproc informa la finalización a Dataproc.
    • Dataproc informa el trabajo como DONE.

Simultaneidad de los trabajos

Puedes configurar la cantidad máxima de trabajos simultáneos de Dataproc con la propiedad de clúster dataproc:dataproc.scheduler.max-concurrent-jobs cuando creas un clúster. Si no se configura este valor de propiedad, el límite superior en los trabajos simultáneos se calcula como max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5). masterMemoryMb se determina por el tipo de máquina de la VM principal. masterMemoryMbPerJob es 1024 de forma predeterminada, pero se puede configurar durante la creación del clúster con la propiedad dataproc:dataproc.scheduler.driver-size-mb del clúster.

Qué sigue