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 dansGoogle 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 Apache Beam Java, les classes
MapState
etSetState
ne sont pas compatibles avec l'exécuteur v2. Pour utiliser les classesMapState
etSetState
avec les pipelines Java, activez Streaming Engine, désactivez l'exécuteur 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, la classe
AfterSynchronizedProcessingTime
n'est pas acceptée. - Les modèles classiques Dataflow ne peuvent pas être exécutés avec une version du moteur d'exécution Dataflow différente de celle avec laquelle ils ont été créés. Cela signifie que les modèles classiques fournis par Google ne peuvent pas activer Runner v2. Pour activer Runner v2 pour les modèles personnalisés, définissez l'option
--experiments=use_runner_v2
lorsque vous créez le modèle.
Activer l'exécuteur 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 le test use_runner_v2
. Pour en savoir plus, consultez Définir les options de pipeline expérimentales.
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. Pour exécuter le job avec Runner v2, définissez le test use_runner_v2
. Pour en savoir plus, consultez Définir les options de pipeline expérimentales.
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.
Désactiver l'exécuteur v2
Pour désactiver l'exécuteur Dataflow v2, suivez les instructions de configuration de votre SDK Apache Beam.
Java
Pour désactiver l'exécuteur v2, définissez le test disable_runner_v2
. Pour en savoir plus, consultez Définir les options de pipeline expérimentales.
Python
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.
Pour les versions antérieures du SDK Python, si votre job est identifié comme utilisant le test auto_runner_v2
, vous pouvez désactiver Runner v2 en définissant le test disable_runner_v2
. Pour en savoir plus, consultez Définir les options de pipeline expérimentales.
Go
L'exécuteur Dataflow v2 ne peut pas être désactivé dans Go. Il s'agit du seul exécuteur Dataflow disponible pour le SDK Apache Beam pour Go.
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.