Résoudre les problèmes de retard des jobs

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

Présentation

Voici les raisons courantes pour lesquelles un job Dataproc est retardé (ralenti):

  • 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

En règle générale, ce message est envoyé au format suivant:

Awaiting execution [SCHEDULER_MESSAGE]"

Les sections suivantes fournissent les causes et les solutions possibles pour des scénarios de retard de tâche spécifiques.

Trop de tâches en cours

Message du programmeur:

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

Causes:

Le nombre maximal de tâches simultanées en fonction de la mémoire de la VM principale est dépassé (le pilote de tâche s'exécute sur la VM principale du cluster Dataproc). Par défaut, Dataproc réserve 3,5 Go de mémoire pour les applications, et autorise une tâche par Go.

Exemple : Le type de machine n1-standard-4 dispose de 15GB Go de mémoire. Avec 3.5GB réservé aux frais généraux, Il reste 11.5GB. Arrondi à l'entier inférieur, 11GB est disponible pour un maximum de 11 tâches simultanées.

Solutions :

  1. Surveillez les métriques de journal, telles que l'utilisation du processeur et de la mémoire, pour estimer les exigences de la tâche.

  2. Lorsque vous créez un cluster de tâches :

    1. Utilisez un type de machine avec une mémoire plus importante pour la VM maître du cluster.

    2. Si le nombre de 1GB par tâche est supérieur à 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 tâche.

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, de nouvelles tâches ne peuvent pas être planifiées.

Quantité de mémoire disponible nécessaire pour planifier un autre job sur le cluster n'est pas suffisant.

Solution :

  1. Lorsque vous créez un cluster:

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

Fréquence maximale du job dépassée

Message du planificateur :

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Causes :

L'agent Dataproc a atteint la limite de taux 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 autre valeur lorsque vous créez un cluster avec la propriété de cluster dataproc:dataproc.scheduler.job-submission-rate.

Afficher l'état de la tâche.

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