Utiliser l'exécuteur Dataflow v2

Lorsque vous utilisez Dataflow pour exécuter votre pipeline, l'exécuteur Dataflow importe votre code de pipeline et vos dépendances dans un bucket Cloud Storage, puis crée un job Dataflow. Ce job Dataflow exécute votre pipeline sur des ressources gérées dans Google Cloud.

  • Pour les pipelines par lot qui utilisent le SDK Apache Beam Java version 2.54.0 ou ultérieure, l'exécuteur v2 est activé par défaut.
  • Pour les pipelines qui utilisent le SDK Java Apache Beam pour Java, l'exécuteur v2 est requis lors de l'exécution de pipelines multilingues, de l'utilisation de conteneurs personnalisés ou de l'utilisation de pipelines de flux de modifications Cloud Spanner ou Cloud Bigtable. Dans les autres cas, utilisez l'exécuteur par défaut.
  • Pour les pipelines qui utilisent le SDK Apache Beam Python version 2.21.0 ou ultérieure, l'exécuteur v2 est activé par défaut. Pour les pipelines qui utilisent le SDK Apache Beam pour Python version 2.45.0 ou ultérieure, l'exécuteur Dataflow v2 est le seul exécuteur Dataflow disponible.
  • Pour le SDK Apache Beam pour Go, l'exécuteur Dataflow v2 est le seul exécuteur Dataflow disponible.

L'exécuteur v2 utilise une architecture basée sur les services qui profite à certains pipelines :

Limites et restrictions

L'exécuteur Dataflow v2 présente les exigences suivantes :

  • L'exécuteur Dataflow v2 nécessite Streaming Engine pour les jobs de traitement par flux.
  • Étant donné que l'exécuteur Dataflow v2 nécessite Streaming Engine pour les jobs de traitement par flux, toute transformation Apache Beam nécessitant l'exécuteur Dataflow v2 nécessite également l'utilisation de Streaming Engine pour les jobs de traitement par flux. Par exemple, le connecteur d'E/S Lite Pub/Sub pour le SDK Apache Beam pour Python est une transformation multilingue nécessitant l'exécuteur Dataflow v2. Si vous essayez de désactiver Streaming Engine pour un job ou un modèle utilisant cette transformation, le job échoue.
  • Pour les pipelines par flux qui utilisent le SDK Apache Beam Java, les classes MapState et SetState ne sont pas acceptées.
  • Pour les pipelines par lot et par flux qui utilisent le SDK Apache Beam Java, les classes OrderedListState et AfterSynchronizedProcessingTime ne sont pas acceptés.

Activer l'exécuteur Dataflow v2

Pour activer l'exécuteur Dataflow v2, suivez les instructions de configuration de votre SDK Apache Beam.

Java

L'exécuteur Dataflow v2 nécessite le SDK Apache Beam Java version 2.30.0 ou ultérieure (la version 2.44.0 ou ultérieure est recommandée).

Pour les pipelines par lot qui utilisent le SDK Apache Beam Java version 2.54.0 ou ultérieure, l'exécuteur v2 est activé par défaut.

Pour activer l'exécuteur v2, exécutez votre job avec l'option --experiments=use_runner_v2.

Pour désactiver l'exécuteur V2, utilisez l'option --experiments=disable_runner_v2. Certains pipelines sont automatiquement activés pour l'exécuteur v2. Pour empêcher votre pipeline d'utiliser cette fonctionnalité, utilisez l'option de pipeline --experiments=disable_runner_v2.

Python

Pour les pipelines qui utilisent le SDK Apache Beam Python version 2.21.0 ou ultérieure, l'exécuteur v2 est activé par défaut.

L'exécuteur Dataflow v2 n'est pas compatible avec les versions 2.20.0 et antérieures du SDK Apache Beam Python.

Dans certains cas, votre pipeline peut ne pas utiliser l'exécuteur V2, même si votre pipeline s'exécute sur une version compatible du SDK. Dans ce cas, pour exécuter le job avec l'exécuteur v2, utilisez l'option --experiments=use_runner_v2.

Si vous souhaitez désactiver l'exécuteur V2 et que votre job est identifié comme test auto_runner_v2, utilisez l'option --experiments=disable_runner_v2. La désactivation de l'exécuteur v2 n'est pas compatible avec les versions 2.45.0 et ultérieures du SDK Apache Beam pour Python.

Go

L'exécuteur Dataflow v2 est le seul exécuteur Dataflow disponible pour le SDK Apache Beam pour Go. L'exécuteur v2 est activé par défaut.

Surveiller le job

Utilisez l'interface de surveillance pour afficher les métriques de tâches Dataflow, telles que l'utilisation de la mémoire, l'utilisation du processeur, etc.

Les journaux de VM de nœud de calcul sont disponibles via l'explorateur de journaux et l'interface de surveillance de Dataflow. Les journaux de VM de nœud de calcul incluent les journaux du processus de test de l'exécuteur et les journaux des processus du SDK. Vous pouvez utiliser les journaux de VM pour résoudre les problèmes de votre tâche.

Résoudre les problèmes liés à l'exécuteur v2

Pour résoudre les problèmes liés aux jobs utilisant l'exécuteur Dataflow v2, suivez les étapes de dépannage du pipeline standard. La liste suivante fournit des informations supplémentaires sur le fonctionnement de l'exécuteur Dataflow v2 :

  • Les jobs de l'exécuteur Dataflow v2 exécutent deux types de processus sur la VM de nœud de calcul : le processus du SDK et le processus de test de l'exécuteur. Selon le pipeline et le type de VM, il peut y avoir un ou plusieurs processus du SDK, mais il n'y a qu'un seul processus d'exploitation de l'exécuteur par VM.
  • Les processus du SDK exécutent le code utilisateur et d'autres fonctions spécifiques au langage. Le processus de test de l'exécuteur gère tout le reste.
  • Le processus d'exploitation de l'exécuteur attend que tous les processus du SDK s'y connectent avant de commencer à demander du travail à partir de Dataflow.
  • Les jobs peuvent être retardés si la VM de nœud de calcul télécharge et installe des dépendances au démarrage des processus du SDK. Si des problèmes surviennent lors d'un processus du SDK, par exemple lors du démarrage ou de l'installation de bibliothèques, le nœud de calcul signale son état comme non opérationnel. Si les temps de démarrage augmentent, activez l'API Cloud Build sur votre projet et envoyez le pipeline avec le paramètre suivant : --prebuild_sdk_container_engine=cloud_build.
  • Étant donné que l'exécuteur Dataflow v2 utilise des points de contrôle, chaque nœud de calcul peut attendre jusqu'à cinq secondes lors de la mise en mémoire tampon des modifications avant de les envoyer pour un traitement ultérieur. Par conséquent, une latence d'environ six secondes est attendue.
  • Pour diagnostiquer les problèmes dans votre code utilisateur, examinez les journaux de nœud de calcul des processus du SDK. Si vous trouvez des erreurs dans les journaux de test de l'exécuteur, contactez l'assistance pour signaler un bug.
  • Pour déboguer les erreurs courantes liées aux pipelines multilingues Dataflow, consultez le guide Conseils d'utilisation des pipelines multilingues.