Resolva problemas de atrasos nas tarefas

Esta página apresenta causas comuns de atrasos no agendamento de tarefas do Dataproc, com informações que podem ajudar a evitá-los.

Vista geral

Seguem-se motivos comuns pelos quais uma tarefa do Dataproc está a ser atrasada (limitada):

  • Demasiados trabalhos em execução
  • Utilização elevada da memória do sistema
  • Sem memória livre suficiente
  • Limite de taxa excedido

Normalmente, a mensagem de atraso da tarefa é emitida no seguinte formato:

Awaiting execution [SCHEDULER_MESSAGE]"

As secções seguintes indicam possíveis causas e soluções para cenários específicos de atraso de tarefas.

Demasiados trabalhos em execução

Mensagem do agendador:

Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)

Causas:

Foi excedido o número máximo de tarefas simultâneas com base na memória da VM principal (o controlador de tarefas é executado na VM principal do cluster do Dataproc). Por predefinição, o Dataproc reserva 3,5 GB de memória para aplicações e permite 1 tarefa por GB.

Exemplo: o tipo de máquina n1-standard-4 tem 15GB de memória. Com 3.5GB reservado para despesas gerais, restam 11.5GB. Arredondando para um número inteiro, o 11GB está disponível para até 11 tarefas simultâneas.

Soluções:

  1. Monitorize as métricas de registo, como a utilização da CPU e a memória, para estimar os requisitos dos trabalhos.

  2. Quando cria um cluster de empregos:

    1. Use um tipo de máquina com mais memória para a VM principal do cluster.

    2. Se 1GB por tarefa for mais do que precisa, defina a propriedade do cluster para menos de 1024.dataproc:dataproc.scheduler.driver-size-mb

    3. Defina a dataproc:dataproc.scheduler.max-concurrent-jobs propriedade do cluster para um valor adequado aos requisitos do seu trabalho.

Memória do sistema elevada ou memória livre insuficiente

Mensagem do agendador:

Throttling job xxx_____JOBID_____xxx (and maybe others): High system memory usage (current=xx%)

Throttling job xxx_____JOBID_____xxx (and maybe others): Not enough free memory (current=xx min=xx)

Causas:

Por predefinição, o agente do Dataproc limita o envio de tarefas quando a utilização de memória atinge 90% (0.9)). Quando este limite é atingido, não é possível agendar novas tarefas.

A quantidade de memória livre necessária para agendar outra tarefa no cluster não é suficiente.

Solução:

  1. Quando cria um cluster:

    1. Aumente o valor da dataproc:dataproc.scheduler.max-memory-used propriedade do cluster. Por exemplo, defina-o acima do valor predefinido de 0.90 para 0.95.
    2. Aumente o valor da dataproc.scheduler.min-free-memory.mb propriedade do cluster. O valor predefinido é 256 MB.

Limite de taxa de tarefas excedido

Mensagem do agendador:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Causas:

O agente do Dataproc atingiu o limite de taxa de envio de tarefas.

Soluções:

  1. Por predefinição, o envio de tarefas do agente do Dataproc está limitado a 1.0 QPS, que pode definir para um valor diferente quando cria um cluster com a dataproc:dataproc.scheduler.job-submission-rate propriedade do cluster.

Ver o estado da tarefa

Para ver o estado e os detalhes da tarefa, consulte o artigo Monitorização e depuração de tarefas.