Ciclo de vida de uma tarefa do Dataproc

Esta página descreve a sequência de passos envolvidos no envio, execução e conclusão de uma tarefa do Dataproc. Também aborda a limitação de tarefas e a depuração.

Fluxo de tarefas do Dataproc

  1. O utilizador envia uma tarefa para o Dataproc.
  2. A tarefa aguarda a aquisição pelo agente dataproc.
    • Se a tarefa for adquirida, JobStatus.State é marcada como RUNNING.
    • Se o trabalho não for adquirido devido a uma falha do agente, uma falha de rede do Compute Engine ou outra causa, o trabalho é marcado como ERROR.
  3. Quando um agente adquire uma tarefa, este verifica se existem recursos suficientes disponíveis no nó principal do cluster do Dataproc para iniciar o controlador.
    • Se não estiverem disponíveis recursos suficientes, a tarefa é atrasada (limitada). JobStatus.Substate mostra a tarefa como QUEUED e Job.JobStatus.details fornece informações sobre a causa do atraso.
  4. Se estiverem disponíveis recursos suficientes, o agente dataproc inicia o processo do controlador de tarefas.
    • Nesta fase, normalmente, existem uma ou mais aplicações em execução no Apache Hadoop YARN. No entanto, as aplicações Yarn podem não ser iniciadas até que o controlador termine a análise dos diretórios do Cloud Storage ou a execução de outras tarefas de início.
  5. O agente dataproc envia periodicamente atualizações para o Dataproc sobre o progresso do trabalho, as métricas do cluster e as aplicações Yarn associadas ao trabalho (consulte Monitorização e depuração de trabalhos).
  6. As candidaturas de Yarn estão concluídas.
    • O trabalho continua a ser comunicado como RUNNING enquanto o motorista realiza tarefas de conclusão do trabalho, como a materialização de recolhas.
    • Uma falha não processada ou não detetada no tópico principal pode deixar o controlador num estado inativo (marcado como RUNNING sem informações sobre a causa da falha).
  7. O condutor sai. O agente dataproc comunica a conclusão ao Dataproc.
    • O Dataproc comunica a tarefa como DONE.

Simultaneidade de tarefas

Pode configurar o número máximo de tarefas do Dataproc simultâneas com a propriedade do cluster dataproc:dataproc.scheduler.max-concurrent-jobs quando cria um cluster. Se o valor desta propriedade não for definido, o limite superior de tarefas simultâneas é calculado como max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5). masterMemoryMb é determinado pelo tipo de máquina da VM principal. masterMemoryMbPerJob é 1024 por predefinição, mas é configurável na criação do cluster com a propriedade do cluster dataproc:dataproc.scheduler.driver-size-mb.

O que se segue