arrow_back

Traitement de données sans serveur avec Dataflow : modèles Flex Dataflow personnalisés (Java)

Accédez à plus de 700 ateliers et cours

Traitement de données sans serveur avec Dataflow : modèles Flex Dataflow personnalisés (Java)

Atelier 2 heures universal_currency_alt 5 crédits show_chart Avancé
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Un pipeline qui accepte les paramètres de ligne de commande est beaucoup plus utile qu'un pipeline dont les paramètres sont codés en dur. Toutefois, pour l'exécuter, vous devez créer un environnement de développement. Pour les pipelines qui doivent être réexécutés par différents utilisateurs ou dans différents contextes, il est encore plus judicieux d'utiliser un modèle Dataflow.

De nombreux modèles Dataflow ont déjà été créés dans le cadre de Google Cloud Platform. Vous les trouverez dans la documentation Premiers pas avec Google. Toutefois, aucun d'entre eux n'exécute la même fonction que le pipeline de cet atelier. Dans cette partie de l'atelier, vous allez convertir le pipeline en un modèle Flex Dataflow personnalisé plus récent (par opposition à un modèle traditionnel personnalisé).

Pour convertir un pipeline en modèle Flex Dataflow personnalisé, vous devez utiliser un Uber JAR pour empaqueter votre code et les dépendances, un fichier Dockerfile pour décrire le code à compiler, Cloud Build pour compiler le conteneur sous-jacent qui sera exécuté au moment de l'exécution afin de créer le job proprement dit, et un fichier de métadonnées pour décrire les paramètres du job.

Prérequis

Connaître les bases de Java

Objectifs

Au cours de cet atelier, vous allez :

  • Convertir un pipeline personnalisé en modèle Flex Dataflow personnalisé
  • Exécuter un modèle Flex Dataflow

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.

Vérifier les autorisations du projet

Avant de commencer à travailler dans Google Cloud, vous devez vous assurer de disposer des autorisations adéquates pour votre projet dans IAM (Identity and Access Management).

  1. Dans la console Google Cloud, accédez au menu de navigation (Icône du menu de navigation), puis sélectionnez IAM et administration > IAM.

  2. Vérifiez que le compte de service Compute par défaut {project-number}-compute@developer.gserviceaccount.com existe et qu'il est associé au rôle editor (éditeur). Le préfixe du compte correspond au numéro du projet, disponible sur cette page : Menu de navigation > Présentation du cloud > Tableau de bord.

État de l'éditeur et nom du compte de service Compute Engine par défaut mis en évidence sur l'onglet "Autorisations"

Remarque : Si le compte n'est pas disponible dans IAM ou n'est pas associé au rôle editor (éditeur), procédez comme suit pour lui attribuer le rôle approprié.
  1. Dans la console Google Cloud, accédez au menu de navigation et cliquez sur Présentation du cloud > Tableau de bord.
  2. Copiez le numéro du projet (par exemple, 729328892908).
  3. Dans le menu de navigation, sélectionnez IAM et administration > IAM.
  4. Sous Afficher par compte principal, en haut de la table des rôles, cliquez sur Accorder l'accès.
  5. Dans le champ Nouveaux comptes principaux, saisissez :
{project-number}-compute@developer.gserviceaccount.com
  1. Remplacez {project-number} par le numéro de votre projet.
  2. Dans le champ Rôle, sélectionnez Projet (ou Basique) > Éditeur.
  3. Cliquez sur Enregistrer.

Configurer votre IDE

Dans cet atelier, vous utiliserez principalement un IDE Web Theia hébergé sur Google Compute Engine. Le dépôt de l'atelier y est précloné. L'IDE prend en charge les serveurs au langage Java et comprend un terminal permettant l'accès programmatique aux API Google Cloud via l'outil de ligne de commande gcloud, comme avec Cloud Shell.

  1. Pour accéder à votre IDE Theia, copiez le lien affiché dans Google Cloud Skills Boost et collez-le dans un nouvel onglet.
Remarque : Le provisionnement complet de l'environnement peut prendre entre trois et cinq minutes, même après l'affichage de l'URL. En attendant, le navigateur indiquera une erreur.

Volet des identifiants affichant l'URL ide_url

Le dépôt de l'atelier a été cloné dans votre environnement. Chaque atelier est divisé en deux dossiers : le premier, intitulé labs, contient du code que vous devez compléter, tandis que le second, nommé solution, comporte un exemple opérationnel que vous pouvez consulter si vous rencontrez des difficultés.

  1. Cliquez sur le bouton Explorateur de fichiers pour y accéder :

Menu de l'explorateur de fichiers développé, avec le dossier "Labs" mis en évidence

Vous pouvez également créer plusieurs terminaux dans cet environnement, comme vous le feriez avec Cloud Shell :

Option "Nouveau terminal" mise en évidence dans le menu "Terminal"

Vous pouvez exécuter la commande gcloud auth list dans le terminal pour vérifier que vous êtes connecté avec un compte de service fourni et que vous disposez donc des mêmes autorisations qu'avec votre compte utilisateur pour l'atelier :

Terminal dans lequel est utilisée la commande gcloud auth list

Si votre environnement cesse de fonctionner, vous pouvez essayer de réinitialiser la VM hébergeant votre IDE depuis la console GCE. Pour cela, procédez comme suit :

Bouton "Réinitialiser" et nom de l'instance de VM mis en évidence sur la page "Instances de VM"

Tâche 1 : Configurer votre pipeline

Pour cet atelier, nous allons utiliser le code de pipeline existant de l'atelier consacré aux "Pipelines avec embranchements" (dossier "solutions").

Ouvrir l'atelier approprié

  1. Si ce n'est pas déjà fait, créez un terminal dans votre environnement IDE, puis copiez et collez la commande suivante :
# Change directory into the lab cd 2_Branching_Pipelines/labs # Download dependencies mvn clean dependency:resolve export BASE_DIR=$(pwd)
  1. Configurez l'environnement de données :
# Create GCS buckets and BQ dataset cd $BASE_DIR/../.. source create_batch_sinks.sh # Generate event dataflow source generate_batch_events.sh # Change to the directory containing the practice version of the code cd $BASE_DIR

Cliquez sur Vérifier ma progression pour valider l'objectif. Configurer l'environnement de données

Mettre à jour le code du pipeline

  • Mettez à jour le fichier MyPipeline.java dans votre IDE à l'aide du fichier de solution, que vous trouverez dans 2_Branching_Pipelines/solution/src/main/java/com/mypackage/pipeline :
cp /home/project/training-data-analyst/quests/dataflow/2_Branching_Pipelines/solution/src/main/java/com/mypackage/pipeline/MyPipeline.java $BASE_DIR/src/main/java/com/mypackage/pipeline/

Tâche 2 : Créer une image de conteneur pour un modèle Flex Dataflow personnalisé

  1. Pour effectuer cette tâche, ajoutez d'abord le plug-in suivant dans votre fichier pom.xml afin d'activer la création d'un Uber JAR. Commencez par ajouter ceci dans le tag "properties" :
<maven-shade-plugin.version>3.2.3</maven-shade-plugin.version>
  1. Ajoutez ensuite ce code dans le tag "build plugins" :
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>${maven-shade-plugin.version}</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> </transformers> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin>
  1. Vous pouvez maintenant créer un fichier Uber JAR à l'aide de cette commande :
cd $BASE_DIR mvn clean package

Notez la taille. Toutes les dépendances sont intégrées dans ce fichier Uber JAR.

  1. Vous pouvez exécuter ce fichier en tant qu'application autonome sans dépendances externes sur d'autres bibliothèques :
ls -lh target/*.jar
  1. Dans le même répertoire que votre fichier pom.xml, créez un fichier nommé Dockerfile avec le texte suivant : Veillez à définir FLEX_TEMPLATE_JAVA_MAIN_CLASS sur le nom complet de votre classe et YOUR_JAR_HERE sur l'Uber JAR que vous avez créé.
FROM gcr.io/dataflow-templates-base/java11-template-launcher-base:latest # Define the Java command options required by Dataflow Flex Templates. ENV FLEX_TEMPLATE_JAVA_MAIN_CLASS="YOUR-CLASS-HERE" ENV FLEX_TEMPLATE_JAVA_CLASSPATH="/template/pipeline.jar" # Make sure to package as an uber-jar including all dependencies. COPY target/YOUR-JAR-HERE.jar ${FLEX_TEMPLATE_JAVA_CLASSPATH}
  1. Vous utiliserez ensuite Cloud Build pour déléguer la création de ce conteneur, au lieu de le créer en local. Commencez par activer la mise en cache pour accélérer les futures compilations :
gcloud config set builds/use_kaniko True
  1. Ensuite, exécutez la compilation proprement dite. Cette commande va archiver l'intégralité du répertoire avec tar, y compris le Dockerfile contenant les instructions de compilation, l'importer dans le service, créer un conteneur et transférer ce conteneur vers Artifact Registry dans votre projet pour une utilisation ultérieure.
export TEMPLATE_IMAGE="gcr.io/$PROJECT_ID/my-pipeline:latest" gcloud builds submit --tag $TEMPLATE_IMAGE .

Vous pouvez également surveiller l'état de la compilation dans l'UI Cloud Build. Vous pouvez également constater que le conteneur obtenu a été importé dans Artifact Registry.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une image de conteneur de modèle Flex Dataflow personnalisé

Tâche 3 : Créer et préparer le modèle Flex

Pour exécuter un modèle, vous devez créer un fichier de spécification de modèle dans Cloud Storage contenant toutes les informations nécessaires à l'exécution du job, telles que les informations et les métadonnées du SDK.

  1. Pour effectuer cette tâche, créez un fichier metadata.json au format suivant, qui prend en compte tous les paramètres d'entrée attendus par votre pipeline.

Si vous avez besoin d'aide, consultez la solution. Cela vous oblige à écrire votre propre expression régulière pour vérifier les paramètres. Bien que ce ne soit pas une bonne pratique, ".*" correspondra à n'importe quelle entrée.

{ "name": "Nom de votre pipeline", "description": "Description de votre pipeline", "parameters": [ { "name": "inputSubscription", "label": "Abonnement d'entrée Pub/Sub", "helpText": "Abonnement Pub/Sub à partir duquel lire.", "regexes": [ "[-_.a-zA-Z0-9]+" ] }, { "name": "outputTable", "label": "Table de sortie BigQuery", "helpText": "Spécification de la table BigQuery dans laquelle écrire, au format 'projet:ensemble_de_données.table'.", "is_optional": true, "regexes": [ "[^:]+:[^.]+[.].+" ] } ] }
  1. Ensuite, créez et préparez le modèle :
export TEMPLATE_PATH="gs://${PROJECT_ID}/templates/mytemplate.json" # Will build and upload the template to GCS gcloud dataflow flex-template build $TEMPLATE_PATH \ --image "$TEMPLATE_IMAGE" \ --sdk-language "JAVA" \ --metadata-file "metadata.json"
  1. Vérifiez que le fichier a été importé à l'emplacement du modèle dans Cloud Storage.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer et préparer le modèle Flex

Tâche 4 : Exécuter le modèle à partir de l'UI

Pour réaliser cette tâche, suivez les instructions ci-dessous :

  1. Accédez à la page Dataflow dans la console Google Cloud.
  2. Cliquez sur Créer un job à partir d'un modèle.
  3. Saisissez un nom valide pour le job dans le champ Nom du job.
  4. Sélectionnez Modèle personnalisé dans le menu déroulant Modèle Dataflow.
  5. Saisissez le chemin d'accès Cloud Storage vers votre fichier de modèle dans le champ "Chemin d'accès Cloud Storage" du modèle.
  6. Saisissez les éléments appropriés sous Paramètres obligatoires.
  7. Cliquez sur Exécuter le job.
Remarque : Vous n'avez pas besoin de spécifier un bucket de préproduction. Dataflow en créera un privé dans votre projet en utilisant votre numéro de projet, comme gs://dataflow-staging--/staging.
  1. Examinez la console Compute Engine. Vous y verrez une VM de lancement temporaire créée pour exécuter votre conteneur et lancer votre pipeline avec les paramètres fournis.

Tâche 5 : Exécuter le modèle à l'aide de gcloud

L'un des avantages des modèles Dataflow est qu'ils peuvent être exécutés dans une plus grande variété de contextes, en dehors d'un environnement de développement. Pour illustrer cela, utilisez gcloud afin d'exécuter un modèle Dataflow à partir de la ligne de commande.

  1. Pour effectuer cette tâche, exécutez la commande suivante dans votre terminal en modifiant les paramètres selon vos besoins :
export PROJECT_ID=$(gcloud config get-value project) export REGION={{{project_0.default_region | Region}}} export JOB_NAME=mytemplate-$(date +%Y%m%H%M$S) export TEMPLATE_LOC=gs://${PROJECT_ID}/templates/mytemplate.json export INPUT_PATH=gs://${PROJECT_ID}/events.json export OUTPUT_PATH=gs://${PROJECT_ID}-coldline/ export BQ_TABLE=${PROJECT_ID}:logs.logs_filtered gcloud dataflow flex-template run ${JOB_NAME} \ --region=$REGION \ --template-file-gcs-location ${TEMPLATE_LOC} \ --parameters "inputPath=${INPUT_PATH},outputPath=${OUTPUT_PATH},tableName=${BQ_TABLE}"
  1. Assurez-vous que votre pipeline s'exécute correctement.

Cliquez sur Vérifier ma progression pour valider l'objectif. Exécuter le modèle à partir de l'UI et à l'aide de gcloud

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.