Résoudre les problèmes liés aux retards d'une tâche

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Cette page liste les causes courantes des retards de planification des tâches Dataproc, ainsi que des informations qui peuvent vous aider à les éviter.

Présentation

Vous trouverez ci-dessous les raisons les plus courantes pouvant expliquer le retard d'une tâche Dataproc (limitation):

  • Trop de tâches 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, le message de retard de tâche est envoyé au format suivant:

Awaiting execution [SCHEDULER_MESSAGE]"

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

Trop de tâches en cours d'exécution

Message Scheduler:

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

Causes:

Le nombre maximal de tâches simultanées basées sur la mémoire de la VM maître a été dépassé (le pilote de la tâche 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 une tâche par Go.

Exemple: le type de machine n1-standard-4 possède 15GB de mémoire. Avec 3.5GB réservé pour les frais généraux, il reste 11.5GB. Arrondi à un entier, 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 la mémoire, pour estimer les besoins en tâches.

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

    1. Utilisez un type de machine à mémoire plus grande 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 tâche.

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

Message Scheduler:

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 des tâches lorsque l'utilisation de la mémoire atteint 90% (0.9)). Lorsque cette limite est atteinte, les nouvelles tâches ne peuvent pas être planifiées.

La quantité de mémoire libre nécessaire pour planifier une autre tâche sur le cluster ne suffit pas.

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 tâches dépassée

Message Scheduler:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Causes:

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

Solutions :

  1. Par défaut, l'envoi de tâches à 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.

Affichez l'état de la tâche.

Pour afficher l'état et les détails de la tâche, consultez la section Surveillance et débogage des tâches.