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 :
L'exécuteur Dataflow v2 vous permet de précompiler votre conteneur Python, ce qui peut améliorer le temps de démarrage des VM et les performances de l'autoscaling horizontal. Pour en savoir plus, consultez la section Dépendances Python prédéfinies.
L'exécuteur Dataflow v2 est compatible avec les pipelines multilingues, une fonctionnalité qui permet à votre pipeline Apache Beam d'utiliser des transformations définies dans d'autres SDK Apache Beam. L'exécuteur Dataflow v2 permet d'utiliser les transformations Java à partir d'un pipeline du SDK Python et d'utiliser les transformations Python à partir d'un pipeline du SDK Java. Lorsque vous exécutez des pipelines Apache Beam sans l'exécuteur V2, l'exécuteur Dataflow utilise des nœuds de calcul spécifiques au langage.
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 en flux continu.
- Étant donné que l'exécuteur Dataflow v2 nécessite Streaming Engine pour les jobs de traitement en flux continu, toute transformation Apache Beam nécessitant l'exécuteur Dataflow v2 nécessite également l'utilisation de Streaming Engine pour les jobs de traitement en flux continu. 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 de streaming qui utilisent le SDK Java Apache Beam, les classes
MapState
etSetState
ne sont pas compatibles avec l'exécuteur v2. Pour utiliser les classesMapState
etSetState
avec des pipelines Java, activez Streaming Engine, désactivez Runner v2 et utilisez le SDK Apache Beam version 2.58.0 ou ultérieure. - Pour les pipelines par lot et par flux qui utilisent le SDK Apache Beam Java, les classes
OrderedListState
etAfterSynchronizedProcessingTime
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.