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, utilisez le simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai sans frais.

Avant de commencer

Configurer votre projet

  1. Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Installez la Google Cloud CLI.

  6. 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.

  7. Pour initialiser la gcloud CLI, exécutez la commande suivante :

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Installez la Google Cloud CLI.

  12. 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.

  13. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init

Créer un rôle personnalisé

  1. Ouvrez la page IAM et administration → Rôles dans la Google Cloud console.
    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 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 la 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 Créer un compte de service.

  4. Dans le champ Nom du compte de service, saisissez le nom workflow-scheduler. La Google Cloud console 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 choisissez le rôle personnalisé Créer un modèle de workflow Dataproc 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 géré, à nœud unique cluster pour exécuter le workflow. Managed Service pour Apache Spark 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 sur la page Workflows de Managed Service pour Apache Spark dans la Google Cloud console pour ouvrir la page Détails du modèle de workflow. Confirmez les attributs du modèle sparkpi attributes.

Créer une tâche Cloud Scheduler

  1. Ouvrez la page Cloud Scheduler dans la Google Cloud console (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 Google Cloud console pour exécuter et tester une tâche, quelle que soit la fréquence que vous définissez pour votre tâche.
    4. Fuseau horaire : sélectionnez votre 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 workflowTemplates.instantiatede Managed Service pour Apache Spark afin d'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 Cloud Scheduler Tâches, cliquez sur "Exécuter".

  2. Attendez quelques minutes, puis ouvrez la page Workflows de Managed Service pour Apache Spark pour vérifier si le workflow sparkpi est terminé.

  3. Une fois que le workflow a supprimé le cluster géré, les détails de la tâche persistent dans la Google Cloud console. Cliquez sur la tâche compute... répertoriée sur la page Tâches de Managed Service pour Apache Spark pour afficher les détails de la tâche de workflow.

Effectuer un nettoyage

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

Supprimer un projet

  1. Dans la Google Cloud console, accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.

Supprimer votre modèle de workflow

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

Supprimer votre tâche Cloud Scheduler

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

Supprimer votre compte de service

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

Étape suivante