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:
Monitorize as métricas de registo, como a utilização da CPU e a memória, para estimar os requisitos dos trabalhos.
Quando cria um cluster de empregos:
Use um tipo de máquina com mais memória para a VM principal do cluster.
Se
1GB
por tarefa for mais do que precisa, defina a propriedade do cluster para menos de1024
.dataproc:dataproc.scheduler.driver-size-mb
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:
Quando cria um cluster:
- Aumente o valor da
dataproc:dataproc.scheduler.max-memory-used
propriedade do cluster. Por exemplo, defina-o acima do valor predefinido de0.90
para0.95
. - Aumente o valor da
dataproc.scheduler.min-free-memory.mb
propriedade do cluster. O valor predefinido é256
MB.
- Aumente o valor da
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:
- 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 adataproc: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.