Vida útil de um job do Dataproc

Esta página descreve a sequência de etapas envolvidas no envio, execução e conclusão de um job do Dataproc. Aqui você também encontra redução e depuração do job.

Fluxo de jobs do Dataproc

  1. O usuário envia o job para o Dataproc.
  2. O job aguarda ser adquirido pelo agente dataproc.
    • Se o job for adquirido, o JobStatus.State será marcado como RUNNING.
    • Se não for adquirido por causa de uma falha no agente, na rede do Google Compute Engine ou por outro motivo, o job será marcado como ERROR.
  3. Depois que um job é adquirido pelo agente, ele verifica se há recursos suficientes disponíveis no nó mestre do cluster do Dataproc para iniciar o driver.
    • Se não houver recursos suficientes disponíveis, o job ficará atrasado (limitado). JobStatus.Substate mostra o job como QUEUED, e Job.JobStatus.details fornece informações sobre a causa do atraso.
  4. Se houver recursos suficientes disponíveis, o agente dataproc iniciará o processo do driver do job.
    • Nesse estágio, geralmente há um ou mais aplicativos em execução no Apache Hadoop HDFS. No entanto, é possível que os aplicativos Yarn não sejam iniciados até que o driver termine de verificar os diretórios do Cloud Storage ou executar outras tarefas do job de inicialização.
  5. O agente dataproc envia periodicamente atualizações ao Dataproc sobre o progresso do job, as métricas de cluster e os aplicativos Yarn associados ao job. Consulte Monitoramento e depuração de jobs.
  6. Os aplicativos Yarn são concluídos.
    • O job continua sendo relatado como RUNNING enquanto o driver realiza todas as tarefas de conclusão do job, como as coleções de materialização.
    • Uma falha não processada ou não detectada no thread principal pode deixar o driver em um estado zumbi (marcado como RUNNING sem informações quanto à causa da falha).
  7. O driver sai. O agente dataproc relata a conclusão para o Dataproc.
    • O Dataproc relata o job como DONE.

Simultaneidade do job

É possível configurar o número máximo de jobs simultâneos do Dataproc com a propriedade dataproc:dataproc.scheduler.max-concurrent-jobs ao criar um cluster. Se esse valor de propriedade não estiver definido, o limite superior de jobs simultâneos será calculado como max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5). masterMemoryMb é determinado pelo tipo de máquina da VM mestre. masterMemoryMbPerJob é 1024 por padrão, mas pode ser configurado na criação do cluster com a propriedade de cluster dataproc:dataproc.scheduler.driver-size-mb.

A seguir