Les modèles Flex Dataflow vous permettent d'empaqueter un pipeline Dataflow pour le déploiement. Ce tutoriel vous explique comment créer un modèle Flex Dataflow, puis comment exécuter un job Dataflow à l'aide de ce modèle.
Objectifs
- Créer un modèle Flex Dataflow
- Utilisez le modèle pour exécuter un job Dataflow.
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Logging, Cloud Storage, Cloud Storage JSON, Resource Manager, Artifact Registry, and Cloud Build API:
gcloud services enable dataflow compute_component logging storage_component storage_api cloudresourcemanager.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Logging, Cloud Storage, Cloud Storage JSON, Resource Manager, Artifact Registry, and Cloud Build API:
gcloud services enable dataflow compute_component logging storage_component storage_api cloudresourcemanager.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
Attribuez des rôles à votre compte de service Compute Engine par défaut. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
roles/artifactregistry.writer
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.PROJECT_NUMBER
: votre numéro de projetSERVICE_ACCOUNT_ROLE
: chaque rôle individuel
Téléchargez et installez le kit de développement Java (JDK) version 17. Vérifiez que la variable d'environnement
JAVA_HOME
est définie et pointe vers votre installation JDK.Téléchargez et installez Apache Maven en suivant les instructions du guide d'installation de Maven spécifique à votre système d'exploitation.
Clonez le dépôt
java-docs-samples
.git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Accédez à l'exemple de code de ce tutoriel.
cd java-docs-samples/dataflow/flex-templates/getting_started
Créez le projet Java dans un fichier Uber JAR.
mvn clean package
Toutes les dépendances sont intégrées dans ce fichier Uber JAR. Vous pouvez exécuter ce fichier en tant qu'application autonome sans dépendances externes sur d'autres bibliothèques.
Clonez le dépôt
python-docs-samples
.git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Accédez à l'exemple de code de ce tutoriel.
cd python-docs-samples/dataflow/flex-templates/getting_started
Clonez le dépôt
golang-samples
.git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Accédez à l'exemple de code de ce tutoriel.
cd golang-samples/dataflow/flex-templates/wordcount
Compilez le binaire Go.
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o wordcount .
Exécutez la commande
gcloud artifacts repositories create
pour créer un dépôt Artifact Registry.gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION
Remplacez les éléments suivants :
- REPOSITORY : nom de votre dépôt. Les noms de dépôt doivent être uniques pour chaque emplacement d'un projet.
- LOCATION : emplacement régional ou multirégional du dépôt.
Exécutez la commande
gcloud auth configure-docker
pour configurer Docker afin d'authentifier les requêtes envoyées à Artifact Registry. Cette commande met à jour votre configuration Docker afin que vous puissiez vous connecter à Artifact Registry pour transférer des images.gcloud auth configure-docker LOCATION-docker.pkg.dev
- Une image de conteneur Docker qui empaquette le code de votre pipeline. Pour les modèles Flex Java et Python, l'image Docker est créée et transférée vers votre dépôt Artifact Registry lorsque vous exécutez la commande
gcloud dataflow flex-template build
. - Un fichier de spécification de modèle. Il s'agit d'un document JSON contenant l'emplacement de l'image de conteneur, ainsi que des métadonnées sur le modèle, telles que les paramètres de pipeline.
- BUCKET_NAME : nom du bucket Cloud Storage que vous avez créé précédemment
- LOCATION : emplacement
- PROJECT_ID : ID du projet Google Cloud
- REPOSITORY : nom du dépôt Artifact Registry que vous avez créé précédemment
- BUCKET_NAME : nom du bucket Cloud Storage que vous avez créé précédemment
- LOCATION : emplacement
- PROJECT_ID : ID du projet Google Cloud
- REPOSITORY : nom du dépôt Artifact Registry que vous avez créé précédemment
Exécutez la commande
gcloud builds submit
pour créer l'image Docker à l'aide d'un fichier Dockerfile avec Cloud Build. Cette commande crée le fichier et le transfère vers votre dépôt Artifact Registry.gcloud builds submit --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/dataflow/wordcount-go:latest .
Remplacez les éléments suivants :
- LOCATION : emplacement
- PROJECT_ID : ID du projet Google Cloud
- REPOSITORY : nom du dépôt Artifact Registry que vous avez créé précédemment
Exécutez la commande
gcloud dataflow flex-template build
pour créer un modèle Flex nomméwordcount-go.json
dans votre bucket Cloud Storage.gcloud dataflow flex-template build gs://BUCKET_NAME/samples/dataflow/templates/wordcount-go.json \ --image "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/dataflow/wordcount-go:latest" \ --sdk-language "GO" \ --metadata-file "metadata.json"
Remplacez BUCKET_NAME par le nom du bucket Cloud Storage que vous avez créé précédemment.
Utilisez la commande
gcloud dataflow flex-template run
pour exécuter un job Dataflow qui utilise le modèle Flex.gcloud dataflow flex-template run "getting-started-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "gs://BUCKET_NAME/getting_started-java.json" \ --parameters output="gs://BUCKET_NAME/output-" \ --additional-user-labels "LABELS" \ --region "REGION"
Remplacez les éléments suivants :
- BUCKET_NAME : nom du bucket Cloud Storage que vous avez créé précédemment
- REGION : région
- LABELS : facultatif. Libellés associés à votre job, au format
<key1>=<val1>,<key2>=<val2>,...
Pour afficher l'état du job Dataflow dans la consoleGoogle Cloud , accédez à la page Jobs Dataflow.
Utilisez la commande
gcloud dataflow flex-template run
pour exécuter un job Dataflow qui utilise le modèle Flex.gcloud dataflow flex-template run "getting-started-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "gs://BUCKET_NAME/getting_started-py.json" \ --parameters output="gs://BUCKET_NAME/output-" \ --additional-user-labels "LABELS" \ --region "REGION"
Remplacez les éléments suivants :
- BUCKET_NAME : nom du bucket Cloud Storage que vous avez créé précédemment
- REGION : région
- LABELS : facultatif. Libellés associés à votre job, au format
<key1>=<val1>,<key2>=<val2>,...
Pour afficher l'état du job Dataflow dans la consoleGoogle Cloud , accédez à la page Jobs Dataflow.
Utilisez la commande
gcloud dataflow flex-template run
pour exécuter un job Dataflow qui utilise le modèle Flex.gcloud dataflow flex-template run "wordcount-go-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "gs://BUCKET_NAME/samples/dataflow/templates/wordcount-go.json" \ --parameters output="gs://BUCKET_NAME/samples/dataflow/templates/counts.txt" \ --additional-user-labels "LABELS" \ --region "REGION"
Remplacez les éléments suivants :
- BUCKET_NAME : nom du bucket Cloud Storage que vous avez créé précédemment
- REGION : région
- LABELS : facultatif. Libellés associés à votre job, au format
<key1>=<val1>,<key2>=<val2>,...
Pour afficher l'état du job Dataflow dans la consoleGoogle Cloud , accédez à la page Jobs Dataflow.
-
Supprimez le bucket Cloud Storage et tous les objets qu'il contient.
gcloud storage rm gs://BUCKET_NAME --recursive
-
Supprimez le dépôt Artifact Registry.
gcloud artifacts repositories delete REPOSITORY \ --location=LOCATION
-
Révoquez les rôles que vous avez accordés au compte de service Compute Engine par défaut. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
roles/artifactregistry.writer
gcloud projects remove-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=SERVICE_ACCOUNT_ROLE
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
- Apprenez à configurer des modèles Flex.
- Consultez la liste des modèles fournis par Google.
Préparer l'environnement
Installez le SDK et toutes les exigences pour votre environnement de développement.
Java
Python
Utilisez le SDK Apache Beam pour Python.
Go
Utilisez le guide de téléchargement et d'installation de Go pour télécharger et installer Go sur votre système d'exploitation spécifique. Pour connaître les environnements d'exécution Go compatibles avec Apache Beam, consultez la page Compatibilité des environnements d'exécution Apache Beam.
Téléchargez l'exemple de code.
Java
Python
Go
Créer un bucket Cloud Storage
Exécutez la commande gcloud storage buckets create
pour créer un bucket Cloud Storage :
gcloud storage buckets create gs://BUCKET_NAME
Remplacez BUCKET_NAME
par le nom de votre bucket Cloud Storage. Les noms des buckets Cloud Storage doivent être uniques et respecter les exigences de dénomination des buckets.
Créer un dépôt Artifact Registry
Créez un dépôt Artifact Registry dans lequel vous transférerez l'image de conteneur Docker pour le modèle.
Les modèles Flex peuvent également utiliser des images prédéfinies stockées dans des registres privés. Pour en savoir plus, consultez la page Utiliser une image d'un registre privé.
Créer le modèle Flex
Au cours de cette étape, vous allez utiliser la commande gcloud dataflow flex-template build
pour créer le modèle Flex.
Un modèle Flex comprend les composants suivants :
L'exemple de dépôt dans GitHub contient le fichier metadata.json
.
Pour étendre votre modèle avec des métadonnées supplémentaires, vous pouvez créer votre propre fichier metadata.json
.
Java
gcloud dataflow flex-template build gs://BUCKET_NAME/getting_started-java.json \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/getting-started-java:latest" \ --sdk-language "JAVA" \ --flex-template-base-image JAVA17 \ --metadata-file "metadata.json" \ --jar "target/flex-template-getting-started-1.0.jar" \ --env FLEX_TEMPLATE_JAVA_MAIN_CLASS="com.example.dataflow.FlexTemplateGettingStarted"
Remplacez les éléments suivants :
Python
gcloud dataflow flex-template build gs://BUCKET_NAME/getting_started-py.json \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/getting-started-python:latest" \ --sdk-language "PYTHON" \ --flex-template-base-image "PYTHON3" \ --metadata-file "metadata.json" \ --py-path "." \ --env "FLEX_TEMPLATE_PYTHON_PY_FILE=getting_started.py" \ --env "FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE=requirements.txt"
Remplacez les éléments suivants :
Go
Exécuter le modèle Flex
Au cours de cette étape, vous utilisez le modèle pour exécuter un job Dataflow.
Java
Si le job s'exécute correctement, le résultat est écrit dans un fichier nommé gs://BUCKET_NAME/output--00000-of-00001.txt
dans votre bucket Cloud Storage.
Python
Si le job s'exécute correctement, le résultat est écrit dans un fichier nommé gs://BUCKET_NAME/output--00000-of-00001.txt
dans votre bucket Cloud Storage.
Go
Si le job s'exécute correctement, le résultat est écrit dans un fichier nommé gs://BUCKET_NAME/samples/dataflow/templates/count.txt
dans votre bucket Cloud Storage.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID