Résoudre les problèmes des retardataires dans les tâches par lot

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:

  1. Dans la console Google Cloud, accédez à la page Tâches de Dataflow.

    Accédez aux tâches

  2. Cliquez sur le nom de la tâche.

  3. Sur la page des détails de la tâche, cliquez sur l'onglet Execution details (Détails d'exécution).

  4. 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.

  5. 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:

  1. Dans la console Google Cloud, accédez à la page Tâches de Dataflow.

    Accédez aux tâches

  2. Cliquez sur le nom de la tâche.

  3. Sur la page des détails de la tâche, cliquez sur l'onglet Execution details (Détails d'exécution).

  4. Dans la liste Vue graphique, sélectionnez Progression des nœuds de calcul.

  5. 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.

  6. 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:

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 :

Étapes suivantes