Resolver problemas de atrasos de jobs

Nesta página, listamos as causas comuns de atrasos no agendamento de jobs do Dataproc, com informações que podem ajudar você a evitar esses problemas.

Visão geral

Confira a seguir os motivos comuns para o atraso (limitação) de um job do Dataproc:

  • Muitos jobs em execução
  • Uso elevado da memória do sistema
  • Memória livre insuficiente
  • Limitação de taxa excedida

Normalmente, a mensagem de atraso do job é emitida no seguinte formato:

Awaiting execution [SCHEDULER_MESSAGE]"

As seções a seguir fornecem possíveis causas e soluções para cenários específicos de atraso de jobs.

Muitos jobs em execução

Mensagem do programador:

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

Causas:

O número máximo de jobs simultâneos com base na memória da VM mestre foi excedido. O driver do job é executado na VM mestre do cluster do Dataproc. Por padrão, o Dataproc reserva 3,5 GB de memória para aplicativos e permite um job por GB.

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

Soluções:

  1. Monitore as métricas de registro, como uso da CPU e memória, para estimar os requisitos do job.

  2. Ao criar um cluster de job:

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

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

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

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

Mensagem do programador:

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 padrão, o agente do Dataproc limita o envio de jobs quando o uso de memória atinge 90% (0.9)). Quando esse limite é atingido, não é possível programar novos jobs.

A quantidade de memória livre necessária para programar outro job no cluster não é suficiente.

Solução:

  1. Ao criar um cluster:

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

Limite de taxa de jobs excedido

Mensagem do programador:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Causas:

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

Soluções:

  1. Por padrão, o envio de jobs do agente do Dataproc é limitado a 1.0 QPS, que pode ser definido como um valor diferente ao criar um cluster com a dataproc:dataproc.scheduler.job-submission-rate propriedade do cluster.

Confira o status do job.

Para conferir o status e os detalhes do job, consulte Monitoramento e depuração de jobs.