Workflow utilisant Cloud Scheduler

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

Configurer votre projet

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Créer un rôle personnalisé

  1. Ouvrez la boîte de dialogue IAM & Admin → Rôles de la console Google Cloud.
    1. Cliquez sur CRÉER UN RÔLE pour ouvrir la page Créer un rôle.
    2. Renseignez les champs "Titre", "Description", "ID" et "Étape de lancement". Suggestion : utilisez "Créer un modèle de workflow Dataproc" comme titre de rôle.
    3. Cliquez sur AJOUTER DES AUTORISATIONS.
      1. Dans le formulaire Ajouter des autorisations, cliquez sur Filtrer, puis sélectionnez "Autorisation". Complétez le filtre pour afficher "Permission: dataproc.workflowTemplates.instantiate".
      2. Cochez la case située à gauche de l'autorisation répertoriée, puis cliquez sur ADD (Ajouter).
    4. Sur la page "Créer un rôle", cliquez à nouveau sur "Ajouter des autorisations" pour répéter les sous-étapes précédentes afin d'ajouter l'autorisation "iam.serviceAccounts.actAs" au rôle personnalisé. La page Créer un rôle répertorie désormais deux autorisations.
    5. Cliquez sur CREATE (Créer) sur la page Custom Role (Rôle personnalisé). Le rôle personnalisé est répertorié sur la page Roles (Rôles).

Créer un compte de service

  1. Dans Google Cloud Console, accédez à la page Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez votre projet.

  3. Cliquez sur + Create service account (+ Créer un compte de service).

  4. Dans le champ Nom du compte de service, saisissez le nom workflow-scheduler. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.

  5. Facultatif : dans le champ Description du compte de service, saisissez une description du compte de service.

  6. Cliquez sur Créer et continuer.

  7. Cliquez sur le champ Sélectionner un rôle, puis sélectionnez le modèle de workflow Dataproc. Créer le rôle personnalisé que vous avez créé à l'étape précédente.

  8. Cliquez sur Continuer.

  9. Dans le champ Rôle d'administrateur du compte de service, saisissez l'adresse e-mail de votre compte Google.

  10. Cliquez sur OK pour terminer la création du compte de service.

Créer un modèle de workflow

Copiez et exécutez les commandes répertoriées ci-dessous dans une fenêtre de terminal local ou dans Cloud Shell pour créer et définir un modèle de workflow.

Notes :

  • Les commandes spécifient la région "us-central1". Vous pouvez spécifier une autre région ou supprimer l'option --region si vous avez déjà exécuté gcloud config set compute/region pour définir la propriété de région.
  • La séquence "-- " (tiret, tiret, espace) de la commande add-job transmet l'argument 1000 à la tâche SparkPi qui spécifie le nombre d'échantillons à utiliser pour estimer la valeur de Pi.

  1. Créez le modèle de workflow.

    gcloud dataproc workflow-templates create sparkpi \
        --region=us-central1
    
  2. Ajoutez la tâche spark au modèle de workflow sparkpi. L'ID d'étape "compute" est requis et identifie la tâche SparkPi ajoutée.
    gcloud dataproc workflow-templates add-job spark \
        --workflow-template=sparkpi \
        --step-id=compute \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        --region=us-central1 \
        -- 1000
    

  3. Utilisez un cluster géré à nœud unique pour exécuter le workflow. Dataproc crée le cluster, y exécute le workflow, puis le supprime une fois le workflow terminé.

    gcloud dataproc workflow-templates set-managed-cluster sparkpi \
        --cluster-name=sparkpi \
        --single-node \
        --region=us-central1
    

  4. Cliquez sur le nom sparkpi dans Dataproc. Processus de la console Google Cloud pour ouvrir Page Détails du modèle de workflow. Confirmez les attributs du modèle sparkpi.

Créer une tâche Cloud Scheduler

  1. Ouvrez la page Cloud Scheduler dans le Console Google Cloud (vous devrez peut-être sélectionner votre projet pour ouvrir la page) Cliquez sur CRÉER UNE TÂCHE.

  2. Saisissez ou sélectionnez les informations suivantes sur la tâche :

    1. Sélectionnez une région : "us-central" ou toute autre région dans laquelle vous avez créé votre modèle de workflow.
    2. Nom : "Sparkpi"
    3. Fréquence : sélectionnez "* * * *" pour une exécution toutes les minutes, sélectionnez "0 9 * * 1" pour une exécution tous les lundis à 9 heures. Consultez la page Définir le calendrier de tâche pour les autres valeurs unix-cron. Remarque : Vous pourrez cliquer sur le bouton "EXÉCUTER MAINTENANT" des Tâches Cloud Scheduler dans la console Google Cloud pour exécuter et tester une tâche, quelle que soit la fréquence que vous définissez.
    4. Fuseau horaire : sélectionnez un fuseau (timezone). Saisissez "United States" (États-Unis) pour répertorier les fuseaux horaires américains.
    5. Cible : "HTTP"
    6. URL : insérez l'URL suivante après avoir spécifié your-project-id. Si vous avez créé votre modèle de workflow dans une région autre que "us-central1", remplacez cet élément. Cette URL appelle l'API Dataproc workflowTemplates.instantiate pour exécuter votre modèle de workflow Sparkpi.
      https://dataproc.googleapis.com/v1/projects/your-project-id/regions/us-central1/workflowTemplates/sparkpi:instantiate?alt=json
      
    7. Méthode HTTP :
      1. "POST"
      2. Corps : "{}"
    8. En-tête d'authentification :
      1. "Ajouter un jeton OAuth"
      2. Compte de service : insérez le paramètre service account address du compte de service que vous avez créé pour ce tutoriel. Vous pouvez utiliser l'adresse de compte suivante après avoir inséré your-project-id :
        workflow-scheduler@your-project-id.iam.gserviceaccount.com
        
      3. Champ d'application : vous pouvez ignorer ce champ.
    9. Cliquez sur CREATE (Créer).

Tester une tâche de workflow planifiée

  1. Sur la ligne de la tâche sparkpi de la page Tâches Cloud Scheduler, cliquez sur "Exécuter".

  2. Attendez quelques minutes, puis ouvrez la page Workflows Dataproc pour vérifier si le workflow sparkpi est terminé.

  3. Une fois le cluster géré supprimé, les détails du job sont conservées dans la console Google Cloud. Cliquez sur la tâche compute... répertoriée sur la page Tâches Dataproc pour afficher les détails de la tâche de workflow.

Nettoyer

Une fois terminé, le workflow de ce tutoriel supprime son cluster géré. Le fait de conserver le workflow vous permet de le relancer sans frais supplémentaires. Vous pouvez supprimer les autres ressources créées dans ce tutoriel pour éviter des coûts récurrents.

Supprimer un projet

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Supprimer votre modèle de workflow

gcloud dataproc workflow-templates delete sparkpi \
    --region=us-central1

Supprimer une tâche Cloud Scheduler

Dans la console Google Cloud, ouvrez la page Tâches Cloud Scheduler, cochez la case située à gauche de la fonction sparkpi, puis cliquez sur SUPPRIMER.

Supprimer un compte de service

Dans la console Google Cloud, ouvrez la page IAM et administration → Comptes de service, cochez la case située à gauche du compte de service workflow-scheduler..., puis cliquez sur SUPPRIMER.

Étape suivante