Cette page répertorie les causes courantes des retards de planification des tâches Dataproc, ainsi que des informations susceptibles de vous aider à les éviter.
Présentation
Vous trouverez ci-dessous les raisons courantes pour lesquelles une tâche Dataproc est retardée (limitée):
- 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 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 de tâche spécifiques.
Trop de tâches 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 tâches simultanées sur la mémoire de la VM maître est dépassé (le pilote de tâches 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
dispose de 15GB
de mémoire. Avec 3.5GB
réservé pour les frais généraux, 11.5GB
reste. Arrondi à un entier, 11GB
est disponible pour 11 tâches simultanées maximum.
Solutions :
Surveillez les métriques de journal, telles que l'utilisation du processeur et la mémoire, pour estimer les exigences de la tâche.
Lorsque vous créez un cluster de tâches:
Utilisez un type de machine à mémoire plus grand pour la VM maître du cluster.
Si
1GB
par tâche est supérieur à vos besoins, définissez la propriété de clusterdataproc:dataproc.scheduler.driver-size-mb
sur une valeur inférieure à1024
.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 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 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 disponible nécessaire pour planifier une autre tâche sur le cluster ne suffit pas.
Solution :
Lorsque vous créez un cluster:
- Augmentez la valeur de la propriété de cluster
dataproc:dataproc.scheduler.max-memory-used
. Par exemple, définissez-la au-dessus de la valeur par défaut0.90
pour0.95
. - Augmentez la valeur de la propriété de cluster
dataproc.scheduler.min-free-memory.mb
. La valeur par défaut est de256
Mo.
- Augmentez la valeur de la propriété de cluster
Limite de taux de tâches dépassée
Message du programmeur:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
Causes:
Le taux d'envoi de la tâche a été atteint.
Solutions :
- 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 clusterdataproc:dataproc.scheduler.job-submission-rate
.
Afficher l'état du job
Pour afficher l'état et les détails de la tâche, consultez la page Surveillance et débogage des tâches.