Esta página lista as causas comuns de atrasos no agendamento de jobs do Dataproc, com informações que podem ajudar você a evitá-los.
Visão geral
A seguir, confira os motivos comuns para o atraso (limitação) de um job do Dataproc:
- Muitos jobs em execução
- Alto uso de memória do sistema
- Memória livre insuficiente
- Limite de taxa excedido
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 agendador:
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 principal foi excedido (o driver do job é executado na VM principal do cluster do Dataproc). Por padrão, o Dataproc reserva 3,5 GB de memória para aplicativos, e permite 1 job por GB.
Exemplo: o tipo de máquina n1-standard-4 tem 15GB de memória. Com 3.5GB reservados para a sobrecarga,
11.5GB permanecem. Arredondando para um número inteiro, 11GB estão disponíveis para até 11 jobs simultâneos.
Soluções:
Monitore as métricas de registro, como uso da CPU e memória, para estimar os requisitos do job.
Ao criar um cluster de jobs:
Use um tipo de máquina com mais memória para a VM principal do cluster.
Se
1GBpor job for mais do que você precisa, defina adataproc:dataproc.scheduler.driver-size-mbpropriedade do cluster como um valor menor que1024.Defina a propriedade do
dataproc:dataproc.scheduler.max-concurrent-jobscluster como um valor adequado aos requisitos do job.
Memória do sistema alta 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 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, novos jobs não podem ser
agendados.
A quantidade de memória livre necessária para agendar outro job no cluster não é suficiente.
Solução:
Ao criar um cluster:
- Aumente o valor da
dataproc:dataproc.scheduler.max-memory-usedpropriedade do cluster. Por exemplo, defina-o acima do padrão0.90para0.95. - Aumente o valor da
dataproc.scheduler.min-free-memory.mbpropriedade do cluster. O valor padrão é256MB.
- Aumente o valor da
Limite de taxa de jobs 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 jobs.
Soluções:
- 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 adataproc:dataproc.scheduler.job-submission-ratepropriedade do cluster.
Conferir o status do job
Para conferir o status e os detalhes do job, consulte Monitoramento e depuração de jobs.