Cómo solucionar problemas relacionados con retrasos en los trabajos

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En esta página, se enumeran las causas comunes de demoras 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 (limita):

  • Hay demasiados trabajos en ejecución
  • Uso elevado de memoria del sistema
  • No hay suficiente memoria disponible
  • Se superó el límite de frecuencia

Por lo general, el mensaje de retraso del trabajo se emitirá en el siguiente formato:

Awaiting execution [SCHEDULER_MESSAGE]"

En las siguientes secciones, se proporcionan posibles causas y soluciones para situaciones de retraso de trabajo específicas.

Hay demasiados trabajos en ejecución

Mensaje del programador:

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

Causas:

Se excede la cantidad máxima de trabajos simultáneos en función de la memoria de la VM principal (el controlador de trabajo se ejecuta en la VM principal del clúster de Dataproc). De forma predeterminada, Dataproc reserva 3.5 GB de memoria para las 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. El redondeo a un número entero, 11GB está disponible para hasta 11 trabajos simultáneos.

Soluciones:

  1. Supervisa las métricas de registro, como el uso de CPU y la memoria, para estimar los requisitos del trabajo.

  2. Cuando creas un clúster de trabajo, sucede lo siguiente:

    1. Usa un tipo de máquina con memoria más grande para la VM de la instancia principal del clúster.

    2. Si 1GB por trabajo es más de lo necesario, establece la propiedad del clúster dataproc:dataproc.scheduler.driver-size-mb en menos de 1024.

    3. Establece la propiedad de clúster dataproc:dataproc.scheduler.max-concurrent-jobs en un valor adecuado para tus requisitos de trabajo.

Memoria del sistema alta o memoria insuficiente

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 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:

  1. Cuando creas un clúster, sucede lo siguiente:

    1. Aumenta el valor de la propiedad de clúster dataproc:dataproc.scheduler.max-memory-used. Por ejemplo, establécelo sobre el valor predeterminado 0.90 en 0.95.
    2. Aumenta el valor de la propiedad de clúster dataproc.scheduler.min-free-memory.mb. El valor predeterminado es 256 MB.

Se excedió 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:

  1. 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úster dataproc:dataproc.scheduler.job-submission-rate.

Ver el estado del trabajo.

Para ver los detalles y el estado del trabajo, consulta Supervisión y depuración de trabajos.