Envoyer une charge de travail par lot Apache Spark

Découvrez comment envoyer une charge de travail par lot sur l'infrastructure de calcul Managed Service pour Apache Spark, qui met à l'échelle les ressources selon les besoins.

Avant de commencer

Configurez votre projet et, si nécessaire, accordez des rôles Identity and Access Management.

Configurer votre projet

Effectuez une ou plusieurs des étapes suivantes, selon vos besoins :

  1. Connectez-vous à votre Google Cloud compte. Si vous n'avez jamais utilisé Google Cloud, créez un compte pour évaluer les performances de nos produits dans des scénarios réels. 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 API.

    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 API

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

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

  7. Enable the Dataproc API.

    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 API

Accorder des rôles IAM si nécessaire

Certains rôles IAM sont requis pour exécuter les exemples de cette page. Selon les règles d'administration, ces rôles peuvent déjà avoir été accordés. Pour vérifier les attributions de rôles, consultez la section Devez-vous accorder des rôles ?.

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer l'accès aux projets, aux dossiers et aux organisations.

Rôles utilisateur

Pour obtenir les autorisations nécessaires pour envoyer une charge de travail par lot sans serveur, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Rôle du compte de service

Pour vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour envoyer une charge de travail par lot sans serveur, demandez à votre administrateur d'accorder le Nœud de calcul Dataproc (roles/dataproc.worker) rôle IAM au compte de service Compute Engine par défaut sur le projet.

Envoyer une charge de travail par lot Spark

Vous pouvez utiliser la Google Cloud console, Google Cloud CLI ou l' API REST pour créer et envoyer une charge de travail par lot Managed Service pour Apache Spark.

Console

  1. Dans la Google Cloud console, accédez à Lots Managed Service pour Apache Spark.

  2. Cliquez sur Créer.

  3. Envoyez une charge de travail par lot Spark qui calcule la valeur approximative de pi en sélectionnant et en remplissant les champs suivants :

    • Batch Info (Informations sur le lot) :
      • Batch ID (ID du lot) : spécifiez un ID pour votre charge de travail par lot. Cette valeur doit comporter entre 4 et 63 caractères minuscules. Les caractères valides sont /[a-z][0-9]-/.
      • Region (Région) : sélectionnez une région dans laquelle votre charge de travail sera exécutée.
    • Container (Conteneur) :
      • Batch type (Type de lot) : Spark.
      • Runtime version (Version d'exécution) : confirmez ou sélectionnez la version d'exécution 2.3.
      • Main class (Classe principale) :
        org.apache.spark.examples.SparkPi
      • Jar files (Fichiers JAR) (ce fichier est pré-installé dans l'environnement d'exécution Spark Managed Service pour Apache Spark).
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Arguments: 1000.
    • Execution Configuration (Configuration de l'exécution) : sélectionnez Service Account (Compte de service). Par défaut, le lot s'exécute à l'aide du compte de service Compute Engine par défaut. Vous pouvez spécifier un compte de service personnalisé. Le compte de service par défaut ou personnalisé doit disposer du rôle Nœud de calcul Dataproc.
    • Network configuration (Configuration réseau) : sélectionnez un sous-réseau dans la région de la session. Managed Service pour Apache Spark active l'accès privé à Google sur le sous-réseau spécifié. Pour connaître les exigences en matière de connectivité réseau, consultez la section Configuration réseau Managed Service pour Apache Spark.
    • Properties (Propriétés) : saisissez la Key (clé, nom de la propriété) et la Value des propriétés Spark compatibles à définir sur votre charge de travail par lot Spark. Remarque : Contrairement aux propriétés de cluster Managed Service pour Apache Spark , les propriétés de charge de travail Managed Service pour Apache Spark n'incluent pas de préfixe spark:.
    • Other options (Autres options) :
  4. Cliquez sur Envoyer pour exécuter la charge de travail par lot Spark.

gcloud

Pour envoyer une charge de travail par lot Spark afin de calculer la valeur approximative de pi, exécutez la commande gcloud CLI gcloud dataproc batches submit spark en local dans une fenêtre de terminal ou dans Cloud Shell.

gcloud dataproc batches submit spark \
    --region=REGION \
    --version=2.3 \
    --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
    --class=org.apache.spark.examples.SparkPi \
    -- 1000

Remplacez les éléments suivants :

  • REGION: Spécifiez la région où votre charge de travail sera exécutée.
  • Autres options : vous pouvez ajouter gcloud dataproc batches submit spark options pour spécifier d'autres options de charge de travail et propriétés Spark.
    • --jars : l'exemple de fichier JAR est pré-installé dans l'environnement d'exécution Spark. L'argument de commande 1000 transmis à la charge de travail SparkPi spécifie 1 000 itérations de la logique d'estimation de pi (les arguments d'entrée de la charge de travail sont inclus après « -- »).
    • --subnet : vous pouvez ajouter cette option pour spécifier le nom d'un sous-réseau dans la région de la session. Si vous ne spécifiez pas de sous-réseau, Managed Service pour Apache Spark sélectionne le default sous-réseau dans la région de la session. Managed Service pour Apache Spark active l'accès privé à Google (PGA) sur le sous-réseau. Pour connaître les exigences en matière de connectivité réseau, consultez la section Configuration réseau Managed Service pour Apache Spark.
    • --tags : vous pouvez ajouter cette option pour spécifier des tags réseau pour le contrôle du trafic. Utilisez des tags réseau pour limiter la connectivité. En production, il est recommandé de limiter les règles de pare-feu aux adresses IP utilisées par vos charges de travail Spark.
    • --properties : vous pouvez ajouter cette option pour saisir les propriétés Spark compatibles à utiliser pour votre charge de travail par lot Spark.
    • --deps-bucket : vous pouvez ajouter cette option pour spécifier un bucket Cloud Storage dans lequel Managed Service pour Apache Spark importera les dépendances de la charge de travail. Le préfixe d'URI gs:// du bucket n'est pas obligatoire. Vous pouvez spécifier le chemin d'accès ou le nom du bucket. Managed Service pour Apache Spark importe le ou les fichiers locaux dans un dossier /dependencies du bucket avant d'exécuter la charge de travail par lot. Remarque : Cette option est obligatoire si votre charge de travail par lot fait référence à des fichiers sur votre machine locale.
    • --ttl : vous pouvez ajouter l' --ttl option pour spécifier la durée de vie du lot. Lorsque la charge de travail dépasse cette durée, elle est arrêtée sans condition, sans attendre la fin du travail en cours. Spécifiez la durée à l'aide d'un s, m, h, ou d (secondes, minutes, heures ou jours) suffixe. La valeur minimale est de 10 minutes (10m), et la valeur maximale est de 14 jours (14d).
      • Lots d'exécution 1.1 ou 2.0 : si --ttl n'est pas spécifié pour une charge de travail par lot d'exécution 1.1 ou 2.0, la charge de travail est autorisée à s'exécuter jusqu'à ce qu'elle se termine naturellement (ou pour toujours si elle ne se termine pas).
      • Lots d'exécution 2.1 ou version ultérieure : si --ttl n'est pas spécifié pour une charge de travail par lot d'exécution 2.1 ou version ultérieure, la valeur par défaut est 4h.
    • --service-account : vous pouvez spécifier un compte de service à utiliser pour exécuter votre charge de travail. Si vous ne spécifiez pas de compte de service, la charge de travail s'exécute sous le compte de service Compute Engine par défaut. Votre compte de service doit disposer du rôle Nœud de calcul Dataproc.
    • Métastore Hive : la commande suivante configure une charge de travail par lot pour qu'elle utilise un métastore Hive externe autogéré à l'aide d'une configuration Spark standard.
      gcloud dataproc batches submit spark\
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
              
    • **Serveur d'historique persistant** :
      1. La commande suivante crée un PHS sur un cluster Managed Service pour Apache Spark à nœud unique. Le PHS doit se trouver dans la région où vous exécutez les charges de travail par lot, et le bucket-name Cloud Storage doit exister.
        gcloud dataproc clusters create PHS_CLUSTER_NAME \
            --region=REGION \
            --single-node \
            --enable-component-gateway \
            --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
                     
      2. Envoyez une charge de travail par lot en spécifiant votre serveur d'historique persistant en cours d'exécution.
        gcloud dataproc batches submit spark \
            --region=REGION \
            --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
            --class=org.apache.spark.examples.SparkPi \
            --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \
            -- 1000
                      
    • Version d'exécution : utilisez l'option --version pour spécifier la version d'exécution Managed Service pour Apache Spark de la charge de travail.
      gcloud dataproc batches submit spark \
          --region=REGION \
          --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
          --class=org.apache.spark.examples.SparkPi \
          --version=VERSION
          -- 1000
                  

API

Cette section explique comment créer une charge de travail par lot pour calculer la valeur approximative de pi à l'aide du service géré pour Apache Spark batches.create`

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id: ID de projet Google Cloud .
  • region : région Compute Engine dans laquelle Managed Service pour Apache Spark exécutera la charge de travail.
  • Remarques :

    • PROJECT_ID : ID de votre Google Cloud projet. Les ID de projet sont répertoriés dans la section Informations sur le projet du tableau de bord de la console Google Cloud .
    • REGION : région de la session.

Méthode HTTP et URL :

POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches

Corps JSON de la requête :

{
  "sparkBatch":{
    "args":[
      "1000"
    ],
    "runtimeConfig": {
      "version": "2.3",
    },
    "jarFileUris":[
      "file:///usr/lib/spark/examples/jars/spark-examples.jar"
    ],
    "mainClass":"org.apache.spark.examples.SparkPi"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
"name":"projects/project-id/locations/region/batches/batch-id",
  "uuid":",uuid",
  "createTime":"2021-07-22T17:03:46.393957Z",
  "sparkBatch":{
    "mainClass":"org.apache.spark.examples.SparkPi",
    "args":[
      "1000"
    ],
    "jarFileUris":[
      "file:///usr/lib/spark/examples/jars/spark-examples.jar"
    ]
  },
  "runtimeInfo":{
    "outputUri":"gs://dataproc-.../driveroutput"
  },
  "state":"SUCCEEDED",
  "stateTime":"2021-07-22T17:06:30.301789Z",
  "creator":"account-email-address",
  "runtimeConfig":{
    "version":"2.3",
    "properties":{
      "spark:spark.executor.instances":"2",
      "spark:spark.driver.cores":"2",
      "spark:spark.executor.cores":"2",
      "spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id"
    }
  },
  "environmentConfig":{
    "peripheralsConfig":{
      "sparkHistoryServerConfig":{
      }
    }
  },
  "operation":"projects/project-id/regions/region/operation-id"
}

Estimer les coûts des charges de travail

Les charges de travail Managed Service pour Apache Spark consomment des unités de calcul de données (DCU) et des ressources de stockage de shuffle. Pour obtenir un exemple qui génère des métriques d'utilisation Managed Service pour Apache Spark afin d'estimer la consommation de ressources et les coûts des charges de travail, consultez la section Tarifs Managed Service pour Apache Spark.

Étape suivante

Apprenez-en davantage sur les points suivants :