Nesta página, listamos as causas comuns de atrasos na programação de jobs do Dataproc, com informações que podem ajudar você a evitá-los.
Informações gerais
Veja a seguir os motivos comuns para um job do Dataproc estar atrasado (limitado):
- Muitos jobs em execução
- Uso elevado da memória do sistema
- Não há memória livre suficiente
- Limitação de taxa excedida
Normalmente, a mensagem de atraso do job será 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 no job.
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 memória 15GB
. Com 3.5GB
reservado para sobrecarga,
11.5GB
permanece. Arredondando para um número inteiro, 11GB
está disponível para até 11 jobs simultâneos.
Soluções:
Monitore métricas de registro, como uso de CPU e memória, para estimar os requisitos do job.
Ao criar um cluster de job:
Use um tipo de máquina com memória maior para a VM mestre do cluster.
Se o
1GB
por job for mais do que o necessário, defina a propriedade de clusterdataproc:dataproc.scheduler.driver-size-mb
como menor que1024
.Defina a propriedade de cluster
dataproc:dataproc.scheduler.max-concurrent-jobs
como um valor adequado aos requisitos do job.
Alta memória do sistema 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:
Ao criar um cluster:
- Aumente o valor da
propriedade de cluster
dataproc:dataproc.scheduler.max-memory-used
. Por exemplo, defina acima do padrão0.90
como0.95
. - Aumente o valor da
propriedade de cluster
dataproc.scheduler.min-free-memory.mb
. O valor padrão é256
MB.
- Aumente o valor da
propriedade de cluster
O limite de taxa do job foi excedido
Mensagem do programador:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
Causas:
O agente do Dataproc atingiu o limite da taxa de envio de jobs.
Soluções:
- Por padrão, o envio de jobs do agente do Dataproc é limitado em
1.0 QPS
, que pode ser definido com um valor diferente ao criar um cluster com a propriedade de clusterdataproc:dataproc.scheduler.job-submission-rate
.
Visualize o status do job.
Para visualizar o status e os detalhes do job, consulte Monitoramento e depuração de jobs.