Les retardataires sont des éléments de travail qui ralentissent vos jobs Dataflow en empêchant le travail en parallèle.
Pour les pipelines de traitement par lot, un retardataire est défini comme un élément de travail présentant les caractéristiques suivantes :
- Il prend beaucoup plus de temps à s'exécuter que les autres éléments de travail de la même étape.
- Il réduit le parallélisme dans l'étape.
- Elle empêche le démarrage des nouveaux travaux.
Dans le pire des cas, un retardataire bloque une phase, car un faible pourcentage du travail est en cours, ce qui entraîne des retards globaux dans une tâche.
Dataflow détecte les retardataires qui surviennent lors des jobs par lot. Si Dataflow détecte un retardataire, il tente également de déterminer la cause de ce retard.
Afficher les retardataires dans la console Google Cloud
Après avoir démarré une tâche Dataflow, vous pouvez utiliser la console Google Cloud pour afficher les retardataires détectés.
Vous pouvez afficher les retardataires par étape ou par nœud de calcul. Utilisez ces vues pour identifier les étapes où se trouvent les retardataires, puis identifiez les nœuds de calcul où des retardataires ont eu lieu à chaque étape.
Afficher les retardataires par étape
Pour afficher les retardataires par étape, procédez comme suit :
Dans la console Google Cloud, accédez à la page Tâches de Dataflow.
Cliquez sur le nom de la tâche.
Sur la page des détails de la tâche, cliquez sur l'onglet Execution details (Détails d'exécution).
Dans la liste Vue graphique, sélectionnez Progression des étapes. Le graphique de progression affiche le nombre agrégé de tous les retardataires détectés à chaque étape.
Pour afficher les détails d'une étape, maintenez le pointeur sur la barre correspondante. Pour afficher les nœuds de calcul de l'étape, cliquez sur Afficher les nœuds de calcul dans le panneau des détails.
Afficher les retardataires par nœud de calcul
Pour afficher les retardataires par nœud de calcul :
Dans la console Google Cloud, accédez à la page Tâches de Dataflow.
Cliquez sur le nom de la tâche.
Sur la page des détails de la tâche, cliquez sur l'onglet Execution details (Détails d'exécution).
Dans la liste Vue graphique, sélectionnez Progression des nœuds de calcul.
Dans la liste Filtrer les nœuds de calcul par phase, sélectionnez la phase. Le graphique de progression affiche les retardataires détectés pour cette phase. La barre présente des ombres plus foncées là où le retardataire a été détecté pour la première fois.
Pour afficher les détails d'un nœud de calcul, maintenez le pointeur sur la barre correspondante.
Dans le panneau Stage info (Informations sur l'étape), la section Straggler details (Détails des retards) répertorie les retardataires de tous les nœuds de calcul affichés sur la page, avec les informations suivantes:
- L'heure de début de la détection du retardataire.
- Le nœud de calcul ayant rencontré le retardataire.
- La cause, si elle est connue.
Résoudre les problèmes liés aux retardataires par lot
Dataflow détecte les causes suivantes des retardataires dans les pipelines de traitement par lot :
Clé d'hôte. Une clé d'hôte est une clé qui représente beaucoup plus d'éléments que d'autres clés de la même
PCollection
. Pour en savoir plus, consultez la section Résoudre les retards liés à des clés d'hôte de ce document.Nœud de calcul lent. Sur un nœud de calcul lent, les éléments de travail sont exécutés plus lentement que d'habitude. Souvent, la vitesse de traitement d'un nœud de calcul lent est inférieure à celle des nœuds de calcul effectuant un travail similaire au même stade. De nombreux facteurs peuvent ralentir le nœud de calcul, comme l'épuisement du processeur, le thrashing, l'architecture de la machine et les processus de nœud de calcul bloqués. Lorsque l'erreur se produit, Dataflow tente de limiter automatiquement le problème. Pour en savoir plus, consultez la section Atténuations automatiques des retardataires causés par des nœuds de calcul lents dans ce document.
Cause indéterminée. Pour les retardataires dont la cause n'est pas déterminée, consultez les étapes générales de dépannage des tâches par lot lentes dans la section "Résoudre les problèmes de tâches lentes ou bloquées".
Résoudre les problèmes liés aux retardataires imputables aux clés d'hôte
Différents facteurs peuvent entraîner des retardataires, mais l'existence d'une clé d'hôte est l'une des causes les plus courantes. Une clé d'hôte est une clé qui représente beaucoup plus d'éléments que d'autres clés de la même PCollection
. Les clés d'hôte peuvent générer des retardataires, car ils limitent la capacité de Dataflow à traiter les éléments en parallèle.
Si Dataflow détecte un retardataire généré par une clé d'hôte, le panneau Détails du retardaire détermine Hot Key
comme cause.
Par défaut, Dataflow n'affiche pas la valeur de la clé d'hôte. Pour afficher la valeur de la clé, définissez l'option de pipeline hotKeyLoggingEnabled
sur true
lorsque vous exécutez le job.
Pour résoudre ce problème, vérifiez que vos données sont réparties de manière uniforme. Si une clé comporte un nombre disproportionné de valeurs, appliquez les mesures suivantes :
- Saisissez de nouveau vos données. Appliquez une transformation
ParDo
pour générer de nouvelles paires clé/valeur. - Pour les tâches Java, utilisez la transformation
Combine.PerKey.withHotKeyFanout
. - Pour les tâches Python, utilisez la transformation
CombinePerKey.with_hot_key_fanout
. - Activez Dataflow Shuffle.
Par exemple, si un pipeline effectue une opération JOIN
dans le cadre d'une transformation SQL, une clé donnée est susceptible de contenir une quantité disproportionnée de données lorsqu'elle est transmise à l'opérateur GroupByKey
exécuté dans le cadre de l'opération JOIN
étendue.
Pour en savoir plus, consultez la demande de fonctionnalité suivante : beam-issue/28186.
Atténuation automatique des retardataires causés par des nœuds de calcul lents
Les nœuds de calcul lents sont peu fréquents sur Dataflow, mais peuvent affecter les performances des tâches. Afin d'éviter les problèmes de performances, lorsque Dataflow détecte des nœuds de calcul lents, il tente de les atténuer avant que les nœuds de calcul ne provoquent des retardataires.
L'atténuation automatique simule un événement de maintenance de l'hôte. L'événement est un mécanisme de maintenance Compute Engine qui se produit régulièrement. En fonction des stratégies de maintenance de l'hôte du nœud de calcul, celui-ci est migré à chaud ou redémarré. Si une migration à chaud se produit, la charge de travail n'est pas interrompue. Si le nœud de calcul est redémarré, le travail en cours du nœud de calcul lent est perdu, et le traitement redémarre.
Si un nœud de calcul lent est détecté et réussi à être atténué, le message suivant s'affiche dans les journaux job-message.
Slow worker ... detected and automatically remediated ...
Étant donné que les nœuds de calcul lents ne sont pas des retardataires, vous n'avez pas à intervenir.
Si l'atténuation échoue, le nœud de calcul lent entraîne un retardataire qui s'affiche dans l'interface de surveillance Dataflow.
L'atténuation automatique peut échouer si votre projet manque de quota pour simuler des requêtes d'événement de maintenance. Pour plus d'informations sur les quotas par défaut, consultez la section Limites de débit des API pour les métriques régionales de la page "Quotas d'utilisation des ressources et gestion des autorisations". Pour demander une augmentation de limite de quota, consultez la section Demander une augmentation de limite de quota de la page "Afficher et gérer les quotas".
Étapes suivantes
- Découvrez comment utiliser l'interface de surveillance de Dataflow.
- Découvrez l'onglet Détails de l'exécution de l'interface de surveillance.