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 portable est activé par défaut.
- Pour les pipelines qui utilisent le SDK Java Apache Beam pour Java, l'exécuteur portable 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. Pour les pipelines de streaming Java à grande échelle, utilisez l'exécuteur Java de streaming (par défaut).
- Pour les pipelines qui utilisent le SDK Apache Beam Python version 2.21.0 ou ultérieure, l'exécuteur portable 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 portable Dataflow est le seul exécuteur Dataflow disponible.
- Pour le SDK Apache Beam pour Go, l'exécuteur portable est le seul exécuteur Dataflow disponible.
L'exécuteur portable utilise une architecture basée sur les services qui profite à de nombreux pipelines :
L'exécuteur portable Dataflow 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 portable Dataflow 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 portable Dataflow 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 portable, l'exécuteur Dataflow utilise des nœuds de calcul spécifiques au langage.
Limites et restrictions
L'exécuteur portable Dataflow présente les exigences et limites suivantes :
- Fonctionnalités uniquement portables : les fonctionnalités suivantes ne sont compatibles qu'avec l'exécuteur portable :
- Transformations gérées et
RunInferenceen Java. - Conteneurs personnalisés.
- VM de nœud de calcul basées sur ARM.
- DoFn fractionnables. La compatibilité avec l'exécuteur non portable est en cours d'étude.
- Transformations gérées et
- L'exécuteur portable Dataflow nécessite Streaming Engine pour les jobs de traitement en flux continu.
- Étant donné que l'exécuteur portable Dataflow nécessite Streaming Engine pour les jobs de traitement en flux continu, toute transformation Apache Beam nécessitant l'exécuteur portable Dataflow 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 qui nécessite l'exécuteur portable Dataflow. 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
MapStateetSetStatene sont pas compatibles avec l'exécuteur portable. Pour utiliser les classesMapStateetSetStateavec des pipelines Java, activez Streaming Engine, désactivez l'exécuteur portable 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
AfterSynchronizedProcessingTimen'est pas compatible. - Bien que l'exécuteur portable soit plus évolutif que l'exécuteur non portable dans de nombreux cas, l'utilisation de la mémoire peut être plus élevée pour le sharding fixe.
- Les modèles Dataflow classiques
ne peuvent pas être exécutésavec une version de l'exécuteur 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 l'exécuteur portable. Pour activer l'exécuteur portable pour les modèles personnalisés, définissez l'option appropriée lorsque vous créez le modèle. Cette option dépend de la version du SDK que vous utilisez :
- SDK Beam version 2.74 et ultérieures :
--experiments=enable_portable_runner. - SDK Beam version 2.73 et antérieures :
--experiments=use_runner_v2.
- SDK Beam version 2.74 et ultérieures :
En raison d'un problème d'autoscaling connu, l'exécuteur portable est désactivé par défaut pour les pipelines Java par lot qui nécessitent un traitement avec état. Vous pouvez toujours activer l'exécuteur portable pour ces pipelines (voir Activer l'exécuteur portable), mais les performances du pipeline peuvent être fortement limitées.
Dans certains pipelines, l'exécuteur portable peut augmenter la fréquence des échecs de cohérence. L'erreur suivante peut s'afficher dans les fichiers journaux : "Internal consistency check failed, the output is likely incorrect. Please retry the job" (Échec du contrôle de cohérence interne. La sortie est probablement incorrecte. Une possible atténuation est d'ajouter une transformation
Reshuffleaprès l'étapeJoin/GrouByKey. Si le taux d'échec n'est pas tolérable et que la mesure d'atténuation ne résout pas le problème, essayez de désactiver le Portable Runner.
Si le taux d'échec n'est pas tolérable et que la solution ne résout pas le problème, essayez de désactiver l'exécuteur portable.
Activer l'exécuteur portable
Pour activer l'exécuteur portable Dataflow, suivez les instructions de configuration de votre SDK Apache Beam.
Java
L'exécuteur portable Dataflow 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 portable est activé par défaut.
- Pour activer l'exécuteur portable, exécutez votre job avec la valeur d'expérience correspondant à votre version du SDK Beam et à votre type de pipeline :
enable_portable_runner. - SDK Beam version 2.74 et ultérieures :
use_runner_v2.
Pour en savoir plus, consultez la page 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 portable est activé par défaut.
L'exécuteur portable Dataflow 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 portable, même si votre pipeline s'exécute sur une version compatible du SDK.
- Pour exécuter le job avec l'exécuteur portable, définissez la valeur d'expérience correspondant à votre version du SDK Beam :
enable_portable_runner. - SDK Beam version 2.74 et ultérieures :
use_runner_v2.
Pour en savoir plus, consultez la page Définir les options de pipeline expérimentales.
Go
L'exécuteur portable Dataflow est le seul exécuteur Dataflow disponible pour le SDK Apache Beam pour Go. L'exécuteur portable est activé par défaut.
Désactiver l'exécuteur portable
Pour désactiver l'exécuteur portable Dataflow, suivez les instructions de configuration de votre SDK Apache Beam.
Java
- Pour désactiver l'exécuteur portable, définissez la valeur d'expérience correspondant à votre version du SDK Beam :
disable_portable_runner(batch) orenable_streaming_java_runner(streaming). - SDK Beam version 2.74 et ultérieures :
disable_runner_v2
SDK Beam version 2.73 et antérieures : `disable_runner_v2`. Pour plus d'informations, consultez Définir les options du pipeline expérimental pipeline options.
Pour en savoir plus, consultez la page Définir les options de pipeline expérimentales.
Python
La désactivation de l'exécuteur portable n'est pas compatible avec les versions 2.45.0 et ultérieures du SDK Apache Beam pour Python.auto_runner_v2disable_runner_v2 Pour plus d'informations, consultez Définir les options de pipeline expérimentales
pipeline
options.
Pour en savoir plus, consultez la page Définir les options de pipeline expérimentales.
Go
L'exécuteur portable Dataflow ne peut pas être désactivé dans Go. L'exécuteur portable est le seul exécuteur Dataflow disponible pour le SDK Apache Beam pour Go.
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. 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 portable en suivant les étapes standard de dépannage des pipelines. Pour résoudre les problèmes liés aux jobs utilisant l'exécuteur portable Dataflow, suivez les étapes de dépannage du pipeline standard.
- La liste suivante fournit des informations supplémentaires sur le fonctionnement de l'exécuteur portable Dataflow : Les jobs qui utilisent l'exécuteur portable Dataflow 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.
- 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 soumettez votre pipeline avec le paramètre suivant :
--prebuild_sdk_container_engine=cloud_build. - Étant donné que Dataflow Portable Runner utilise des points de contrôle, chaque nœud de calcul peut attendre jusqu'à cinq secondes pendant la mise en mémoire tampon des modifications avant d'envoyer les modifications pour un traitement ultérieur. Étant donné que l'exécuteur portable Dataflow 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.
- 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.