Résoudre les problèmes de retard des jobs

Cette page répertorie les causes courantes des retards de planification des tâches Dataproc, et fournit des informations pour vous aider à les éviter.

Présentation

Voici les raisons courantes pour lesquelles une tâche Dataproc est retardée (limitée):

  • Trop de jobs en cours d'exécution
  • Utilisation élevée de la mémoire système
  • Mémoire disponible insuffisante
  • Limitation du débit dépassée

Généralement, le message de retard de la tâche est émis au format suivant:

Awaiting execution [SCHEDULER_MESSAGE]"

Les sections suivantes fournissent des causes possibles et des solutions pour des scénarios de retard au travail spécifiques.

Trop de jobs en cours d'exécution

Message du programmeur:

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

Causes:

Le nombre maximal de jobs simultanés basé sur la mémoire de la VM maître est dépassé (le pilote de tâches s'exécute sur la VM maître du cluster Dataproc). Par défaut, Dataproc réserve 3,5 Go de mémoire aux applications et autorise 1 tâche par Go.

Exemple: Le type de machine n1-standard-4 dispose de 15GB de mémoire. 3.5GB étant réservé à la surcharge, 11.5GB reste. En arrondissant à un nombre entier, 11GB est disponible pour un maximum de 11 tâches simultanées.

Solutions :

  1. Surveillez les métriques de journaux, telles que l'utilisation du processeur et la mémoire, pour estimer les besoins du job.

  2. Lorsque vous créez un cluster de jobs:

    1. Utilisez un type de machine à plus grande capacité de mémoire pour la VM maître du cluster.

    2. Si la valeur 1GB par tâche est supérieure à ce dont vous avez besoin, définissez la propriété de cluster dataproc:dataproc.scheduler.driver-size-mb sur une valeur inférieure à 1024.

    3. Définissez la propriété de cluster dataproc:dataproc.scheduler.max-concurrent-jobs sur une valeur adaptée aux exigences de votre job.

Mémoire système élevée ou mémoire disponible insuffisante

Message du programmeur:

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)

Causes:

Par défaut, l'agent Dataproc limite l'envoi de tâches lorsque l'utilisation de la mémoire atteint 90% (0.9). Lorsque cette limite est atteinte, les nouvelles tâches ne peuvent plus être planifiées).

La quantité de mémoire disponible nécessaire pour planifier une autre tâche sur le cluster n'est pas suffisante.

Solution :

  1. Lorsque vous créez un cluster:

    1. Augmentez la valeur de la propriété de cluster dataproc:dataproc.scheduler.max-memory-used. Par exemple, définissez-le au-dessus de la valeur par défaut 0.90 sur 0.95.
    2. Augmentez la valeur de la propriété de cluster dataproc.scheduler.min-free-memory.mb. La valeur par défaut est de 256 Mo.

Limite du nombre de jobs dépassé

Message du programmeur:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Causes:

L'agent Dataproc a atteint la limite du débit d'envoi de tâches.

Solutions :

  1. Par défaut, l'envoi de tâches par l'agent Dataproc est limité à 1.0 QPS, que vous pouvez définir sur une valeur différente lorsque vous créez un cluster avec la propriété de cluster dataproc:dataproc.scheduler.job-submission-rate.

Afficher l'état d'un job

Pour afficher l'état et les détails du job, consultez la page Surveillance et débogage des tâches.