En esta página, se enumeran las causas comunes de los retrasos en la programación de trabajos de Dataproc, con información que puede ayudarte a evitarlas.
Descripción general
Los siguientes son motivos comunes por los que un trabajo de Dataproc se retrasa (regulado):
- Hay demasiados trabajos en ejecución
- Uso elevado de memoria del sistema
- No hay suficiente memoria libre
- Se superó el límite de frecuencia
Por lo general, el mensaje de demora del trabajo se emitirá en el siguiente formato:
Awaiting execution [SCHEDULER_MESSAGE]"
En las siguientes secciones, se proporcionan las posibles causas y soluciones para situaciones específicas de retrasos de trabajo.
Hay demasiados trabajos en ejecución
Mensaje del programador:
Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)
Causas:
Se supera la cantidad máxima de trabajos simultáneos basados en la memoria de la VM principal (el controlador de trabajos se ejecuta en la VM instancia principal del clúster de Dataproc). De forma predeterminada, Dataproc reserva 3.5 GB de memoria para aplicaciones y permite 1 trabajo por GB.
Ejemplo: El tipo de máquina n1-standard-4
tiene 15GB
de memoria. Con 3.5GB
reservado para la sobrecarga, 11.5GB
permanece. Cuando se redondea a un número entero, 11GB
está disponible para un máximo de 11 trabajos simultáneos.
Soluciones:
Supervisa las métricas de registro, como el uso de CPU y la memoria, para estimar los requisitos del trabajo.
Cuando creas un clúster de trabajo, sucede lo siguiente:
Usa un tipo de máquina de memoria más grande para la VM de la instancia principal del clúster.
Si
1GB
por trabajo es más de lo necesario, establece la propiedad del clústerdataproc:dataproc.scheduler.driver-size-mb
en menos de1024
.Establece la propiedad del clúster
dataproc:dataproc.scheduler.max-concurrent-jobs
en un valor adecuado para los requisitos de tu trabajo.
Hay mucha memoria del sistema o no hay suficiente memoria libre
Mensaje del 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:
De forma predeterminada, el agente de Dataproc limita el envío de trabajos cuando el uso de la memoria alcanza el 90% (0.9)
). Cuando se alcanza este límite, no se pueden programar trabajos nuevos.
La cantidad de memoria libre necesaria para programar otro trabajo en el clúster no es suficiente.
Solución:
Cuando creas un clúster, sucede lo siguiente:
- Aumenta el valor de la propiedad del clúster
dataproc:dataproc.scheduler.max-memory-used
. Por ejemplo, establécelo por encima del valor predeterminado de0.90
en0.95
. - Aumenta el valor de la propiedad del clúster
dataproc.scheduler.min-free-memory.mb
. El valor predeterminado es256
MB.
- Aumenta el valor de la propiedad del clúster
Se superó el límite de frecuencia de trabajos
Mensaje del programador:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
Causas:
El agente de Dataproc alcanzó el límite de frecuencia de envío de trabajos.
Soluciones:
- De forma predeterminada, el envío de trabajos del agente de Dataproc está limitado a
1.0 QPS
, que puedes configurar con un valor diferente cuando creas un clúster con la propiedad del clústerdataproc:dataproc.scheduler.job-submission-rate
.
Consulta el estado del trabajo.
Para ver el estado y los detalles del trabajo, consulta Supervisión y depuración de trabajos.