Configurer des modèles Flex

Cette page fournit des informations sur les variables d'environnement Dockerfile requises et sur les paramètres de pipeline compatibles avec les modèles Flex Dataflow.

Définir les variables d'environnement requises dans le fichier Dockerfile

Si vous souhaitez créer votre propre fichier Docker pour une tâche de modèle Flex, vous devez spécifier les variables d'environnement suivantes :

Java

Vous devez spécifier FLEX_TEMPLATE_JAVA_MAIN_CLASS et FLEX_TEMPLATE_JAVA_CLASSPATH dans le fichier Dockerfile.

Python

Vous devez spécifier les éléments suivants dans votre fichier Dockerfile : FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS et FLEX_TEMPLATE_PYTHON_SETUP_FILE.

Par exemple, nous avons défini les variables d'environnement suivantes dans le tutoriel sur la diffusion dans les modèles Flex en langage Python :

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"

Modifier l'image de base

Vous devez utiliser une image de base fournie par Google pour empaqueter vos conteneurs à l'aide de Docker. Choisissez le nom de la version la plus récente dans la documentation de référence sur les images de base des modèles Flex. Ne sélectionnez pas latest.

Spécifiez l'image de base au format suivant :

gcr.io/dataflow-templates-base/IMAGE_NAME:VERSION_NAME

Remplacez l'élément suivant :

Spécifier les paramètres du pipeline

Les options de pipeline sont des paramètres d'exécution qui configurent comment et où exécuter les tâches Dataflow. Vous pouvez définir les options de pipeline Dataflow suivantes pour les tâches de modèle Flex à l'aide de l'outil de ligne de commande gcloud :

Java

Champ Type Description Valeur par défaut
gcpTempLocation String Chemin d'accès Cloud Storage pour les fichiers temporaires. Doit être une URL Cloud Storage valide commençant par gs://.
numWorkers int Nombre initial d'instances Google Compute Engine à utiliser lors de l'exécution du pipeline. Cette option détermine le nombre de nœuds de calcul démarrés par le service Dataflow au début de la tâche. Si ce champ n'est pas défini, le service Dataflow détermine un nombre approprié de nœuds de calcul.
maxNumWorkers int Nombre maximal d'instances Compute Engine à mettre à la disposition du pipeline pendant l'exécution. Sachez que cette valeur peut être supérieure au nombre initial de nœuds de calcul (spécifié par numWorkers pour permettre à la tâche d'évoluer, automatiquement ou par un autre moyen). Si ce champ n'est pas défini, le service Dataflow détermine un nombre approprié de nœuds de calcul.
numberOfWorkerHarnessThreads int Nombre de threads par faisceau de nœud de calcul. Si ce champ n'est pas défini, le service Cloud Dataflow détermine un nombre approprié de threads par nœud de calcul.
workerRegion String

Spécifie une région Compute Engine permettant de lancer des instances de nœuds de calcul pour exécuter le pipeline. Cette option permet d'exécuter des nœuds de calcul dans un emplacement différent de celui utilisé par region pour déployer, gérer et surveiller les tâches. La zone de workerRegion est automatiquement attribuée.

Remarque : Cette option ne peut pas être combinée avec workerZone ou zone.

Si ce champ n'est pas défini, la valeur par défaut est region.
workerZone String

Spécifie une zone Compute Engine permettant de lancer des instances de nœuds de calcul pour exécuter le pipeline. Cette option permet d'exécuter des nœuds de calcul dans un emplacement différent de celui utilisé par region pour déployer, gérer et surveiller les tâches.

Remarque : Cette option ne peut pas être combinée avec workerRegion ou zone.

Si vous spécifiez region ou workerRegion, workerZone est défini par défaut sur une zone de la région correspondante. Vous pouvez ignorer ce comportement en spécifiant une zone différente.
zone String (Obsolète) Pour le SDK Apache Beam 2.17.0 ou version antérieure, spécifie la zone Compute Engine permettant de lancer des instances de nœuds de calcul pour exécuter votre pipeline. Si vous spécifiez region, zone est défini par défaut sur une zone de la région correspondante. Vous pouvez ignorer ce comportement en spécifiant une zone différente.
dataflowKmsKey String Spécifie la clé de chiffrement gérée par le client (CMEK, Customer-Managed Encryption Key) qui permet de chiffrer les données au repos. Vous pouvez contrôler la clé de chiffrement via Cloud KMS. Vous devez également spécifier le paramètre gcpTempLocation pour utiliser cette fonctionnalité. Dans le cas contraire, Dataflow utilise le chiffrement Google Cloud par défaut à la place du chiffrement CMEK.
network String Réseau Compute Engine permettant de lancer des instances Compute Engine pour exécuter le pipeline. Découvrez comment spécifier le réseau. Si ce champ n'est pas défini, Google Cloud considère que vous allez utiliser un réseau nommé default.
subnetwork String Sous-réseau Compute Engine permettant de lancer des instances Compute Engine pour exécuter le pipeline. Découvrez comment spécifier le sous-réseau. Le service Dataflow détermine la valeur par défaut.
enableStreamingEngine boolean Indique si Streaming Engine de Dataflow est activé (valeur "true") ou désactivé. L'activation de Streaming Engine permet d'exécuter les étapes de votre pipeline de streaming dans le backend du service Dataflow, économisant ainsi les ressources de processeur, de mémoire et de stockage sur disque persistant. La valeur par défaut est false. Cela signifie que les étapes de votre pipeline de streaming sont exécutées entièrement sur des VM de nœuds de calcul.
serviceAccount String Spécifie un compte de service de contrôleur géré par l'utilisateur, au format my-service-account-name@<project-id>.iam.gserviceaccount.com. Pour plus d'informations, consultez la section dédiée au compte de service de contrôleur de la page concernant la sécurité et les autorisations dans Cloud Dataflow. Si ce champ n'est pas défini, les nœuds de calcul utilisent le compte de service Compute Engine de votre projet en tant que compte de service de contrôleur.
workerMachineType String

Type de machine Compute Engine utilisé par Dataflow lors du démarrage des VM de nœud de calcul. Vous pouvez utiliser toutes les familles de types de machines Compute Engine disponibles, ainsi que des types de machines personnalisés.

Pour des résultats optimaux, utilisez des types de machine n1. Les types de machines à cœur partagé, tels que les nœuds de calcul des séries f1 et g1, ne sont pas disponibles avec le contrat de niveau de service de Dataflow.

Notez que l'utilisation de Dataflow est facturée en fonction du nombre de processeurs virtuels et de Go de mémoire consommés par les nœuds de calcul. La facturation ne dépend pas de la famille du type de machine.

Si cette option n'est pas définie, le service Dataflow choisit le type de machine en fonction de la tâche.

Python

Champ Type Description Valeur par défaut
temp_location str Chemin d'accès Cloud Storage pour les fichiers temporaires. Doit être une URL Cloud Storage valide commençant par gs://. Si ce champ n'est pas spécifié, la valeur par défaut est définie sur staging_location. Vous devez spécifier au moins un des éléments temp_location ou staging_location pour exécuter le pipeline sur Google Cloud.
num_workers int Nombre d'instances Compute Engine à utiliser lors de l'exécution du pipeline. Si ce champ n'est pas défini, le service Dataflow détermine un nombre approprié de nœuds de calcul.
max_num_workers int Nombre maximal d'instances Compute Engine à mettre à la disposition du pipeline pendant l'exécution. Sachez que cette valeur peut être supérieure au nombre initial de nœuds de calcul (spécifié par num_workers pour permettre à la tâche d'évoluer, automatiquement ou par un autre moyen). Si ce champ n'est pas défini, le service Dataflow détermine un nombre approprié de nœuds de calcul.
number_of_worker_harness_threads int Nombre de threads par faisceau de nœud de calcul. Si ce champ n'est pas défini, le service Cloud Dataflow détermine un nombre approprié de threads par nœud de calcul. Pour utiliser ce paramètre, vous devez également utiliser l'option --experiments=use_runner_v2
worker_region String

Spécifie une région Compute Engine permettant de lancer des instances de nœuds de calcul pour exécuter le pipeline. Cette option permet d'exécuter des nœuds de calcul dans un emplacement différent de celui utilisé par region pour déployer, gérer et surveiller les tâches. La zone de worker_region est automatiquement attribuée.

Remarque : Cette option ne peut pas être combinée avec worker_zone ou zone.

Si ce champ n'est pas défini, la valeur par défaut est region.
worker_zone String

Spécifie une zone Compute Engine permettant de lancer des instances de nœuds de calcul pour exécuter le pipeline. Cette option permet d'exécuter des nœuds de calcul dans un emplacement différent de celui utilisé par region pour déployer, gérer et surveiller les tâches.

Remarque : Cette option ne peut pas être combinée avec worker_region ou zone.

Si vous spécifiez region ou worker_region, worker_zone est défini par défaut sur une zone de la région correspondante. Vous pouvez ignorer ce comportement en spécifiant une zone différente.
zone str (Obsolète) Pour le SDK Apache Beam 2.17.0 ou version antérieure, spécifie la zone Compute Engine permettant de lancer des instances de nœuds de calcul pour exécuter votre pipeline. Si vous spécifiez region, zone est défini par défaut sur une zone de la région correspondante. Vous pouvez ignorer ce comportement en spécifiant une zone différente.
dataflow_kms_key str Spécifie la clé de chiffrement gérée par le client (CMEK, Customer-Managed Encryption Key) qui permet de chiffrer les données au repos. Vous pouvez contrôler la clé de chiffrement via Cloud KMS. Vous devez également spécifier le paramètre temp_location pour utiliser cette fonctionnalité. Dans le cas contraire, Dataflow utilise le chiffrement Google Cloud par défaut à la place du chiffrement CMEK.
network str Réseau Compute Engine permettant de lancer des instances Compute Engine pour exécuter le pipeline. Découvrez comment spécifier le réseau. Si ce champ n'est pas défini, Google Cloud considère que vous allez utiliser un réseau nommé default.
subnetwork str Sous-réseau Compute Engine permettant de lancer des instances Compute Engine pour exécuter le pipeline. Découvrez comment spécifier le sous-réseau. Le service Dataflow détermine la valeur par défaut.
enable_streaming_engine bool Indique si Streaming Engine de Dataflow est activé (valeur "true") ou désactivé. L'activation de Streaming Engine permet d'exécuter les étapes de votre pipeline de streaming dans le backend du service Dataflow, économisant ainsi les ressources de processeur, de mémoire et de stockage sur disque persistant. La valeur par défaut est false. Cela signifie que les étapes de votre pipeline de streaming sont exécutées entièrement sur des VM de nœuds de calcul.
service_account_email str Spécifie un compte de service de contrôleur géré par l'utilisateur, au format my-service-account-name@<project-id>.iam.gserviceaccount.com. Pour plus d'informations, consultez la section dédiée au compte de service de contrôleur de la page concernant la sécurité et les autorisations dans Cloud Dataflow. Si ce champ n'est pas défini, les nœuds de calcul utilisent le compte de service Compute Engine de votre projet en tant que compte de service de contrôleur.
machine_type str

Type de machine Compute Engine utilisé par Dataflow lors du démarrage des VM de nœud de calcul. Vous pouvez utiliser toutes les familles de types de machines Compute Engine disponibles, ainsi que des types de machines personnalisés.

Pour des résultats optimaux, utilisez des types de machine n1. Les types de machines à cœur partagé, tels que les nœuds de calcul des séries f1 et g1, ne sont pas disponibles avec le contrat de niveau de service de Dataflow.

Notez que l'utilisation de Dataflow est facturée en fonction du nombre de processeurs virtuels et de Go de mémoire consommés par les nœuds de calcul. La facturation ne dépend pas de la famille du type de machine.

Si cette option n'est pas définie, le service Dataflow choisit le type de machine en fonction de la tâche.

Étape suivante