Les retardataires sont des éléments de travail qui ralentissent vos jobs Dataflow en empêchant le travail en parallèle.
Un retardataire est un élément de travail qui présente les caractéristiques suivantes:
- Cette tâche prend beaucoup plus de temps que les autres tâches de la même étape.
- Elle réduit le parallélisme au sein de la phase.
- 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 lors des tâches par lot. Si Dataflow détecte un retardataire, il tente également de déterminer la cause de ce retard.
Afficher les retardataires dans l'interface de surveillance de Dataflow
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 phase ou par nœud de calcul. Utilisez ces vues pour identifier les phases retardataires, puis identifiez les nœuds de calcul où ces retards se sont produits à chaque étape.
Afficher les retardataires par phase
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 indique le nombre cumulé de retardataires détectés à chaque étape.
Pour afficher les détails d'une phase, passez la souris sur la barre correspondante. Pour afficher les nœuds de calcul de la phase, cliquez sur Afficher les nœuds de calcul dans le panneau de détails.
Afficher les retardataires par nœud de calcul
Pour afficher les retardataires par nœud de calcul, 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 nœuds de calcul.
Dans la liste Filtrer les nœuds de calcul par phase, sélectionnez la phase. Le graphique de progression affiche tous 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, passez la souris 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
Dataflow détecte les causes suivantes des retardataires:
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.Cause non dé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 le document Dépannage et débogage des pipelines.
Résoudre les retards dus à des clés d'hôte
Plusieurs facteurs peuvent entraîner des retards, 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 les autres clés du 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 la tâche.
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.
Étapes suivantes
- Découvrez comment utiliser l'interface de surveillance de Dataflow.
- Comprenez l'onglet Détails d'exécution dans l'interface de surveillance.