Découvrez comment envoyer une charge de travail par lot sur l'infrastructure de calcul Managed Service pour Apache Spark, qui effectue un scaling des ressources en fonction des besoins.
Avant de commencer
Configurez votre projet et, si nécessaire, attribuez des rôles Identity and Access Management.
Configurer votre projet
Effectuez une ou plusieurs des étapes suivantes, si nécessaire :
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Accorder des rôles IAM si nécessaire
Certains rôles IAM sont requis pour exécuter les exemples de cette page. En fonction des règles d'administration, ces rôles ont peut-être déjà été attribués. Pour vérifier les attributions de rôles, consultez Devez-vous attribuer des rôles ?.
Pour en savoir plus sur l'attribution de rôles, consultez 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 :
- Éditeur Dataproc (
roles/dataproc.editor) sur le projet - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur le compte de service Compute Engine par défaut
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 rôle IAM Nœud de calcul Dataproc (roles/dataproc.worker) au compte de service Compute Engine par défaut sur le projet.
Envoyer une charge de travail par lot Spark
Vous pouvez utiliser la console Google Cloud , la Google Cloud CLI ou l'API REST pour créer et envoyer une charge de travail par lot Managed Service pour Apache Spark.
Console
Dans la console Google Cloud , accédez à la page Jobs de Managed Service pour Apache Spark.
Cliquez sur Envoyer un job pour ouvrir la page Envoyer un job.
Envoyez une charge de travail par lot Spark qui calcule la valeur approximative de pi en sélectionnant et en remplissant les champs suivants :
- Sélectionner le type de calcul pour le job : sélectionnez Spark sans serveur.
- Détails du job sans serveur :
- ID du job : spécifiez un ID pour votre charge de travail par lot (ou acceptez l'ID par défaut). Cette valeur doit comporter entre 4 et 63 caractères minuscules, commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des traits d'union (
/[a-z0-9-]/). - Profil d'exécution : sélectionnez une région dans la liste Régions, puis sélectionnez Configuration de service par défaut (ou un profil d'exécution enregistré) dans la liste Profils d'exécution.
- Configurer le profil d'exécution (facultatif) : dans la fiche Résumé, cliquez sur Configurer (ou cliquez sur Créer un profil dans le menu Profil d'exécution) pour ouvrir le panneau de configuration du profil d'exécution, dans lequel vous pouvez personnaliser les paramètres suivants, puis cliquez sur Utiliser la configuration (ou Enregistrer le nouveau profil) :
- Niveau et Configuration de l'exécuteur : sélectionnez le niveau de calcul (Premium ou Standard) et la forme de l'exécuteur.
- Configuration supplémentaire :
- Configuration de l'environnement d'exécution : cliquez sur Modifier pour confirmer ou sélectionner la version de l'environnement d'exécution Spark
3.0, ou pour spécifier une image Spark personnalisée, un bucket de préproduction Cloud Storage ou un dépôt de packages Python. - Configuration du metastore : cliquez sur Modifier pour configurer la charge de travail afin qu'elle utilise un catalogue Lakehouse ou un Dataproc Metastore autogéré externe.
- Réseau et sécurité : cliquez sur Modifier pour sélectionner un compte de service (par défaut, la charge de travail s'exécute à l'aide du compte de service Compute Engine par défaut, ou vous pouvez spécifier un compte de service personnalisé avec le rôle de nœud de calcul Dataproc) et sélectionnez un sous-réseau dans la région de la charge de travail (Managed Service pour Apache Spark active l'accès privé à Google (PGA) sur le sous-réseau spécifié ; consultez Configuration réseau de Managed Service pour Apache Spark).
- Configuration de l'environnement d'exécution : cliquez sur Modifier pour confirmer ou sélectionner la version de l'environnement d'exécution Spark
- ID du job : spécifiez un ID pour votre charge de travail par lot (ou acceptez l'ID par défaut). Cette valeur doit comporter entre 4 et 63 caractères minuscules, commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des traits d'union (
- Fichiers et artefacts :
- Type de mission : sélectionnez Spark (Scala/Java).
- Configuration du pilote : sélectionnez Classe principale.
- Classe principale :
org.apache.spark.examples.SparkPi
- Arguments : saisissez
1000et appuyez surEnter. - Fichiers JAR (ce fichier est préinstallé dans l'environnement d'exécution Managed Service pour Apache Spark) :
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Exécution et propriétés des jobs :
- Propriétés Spark : cliquez sur Ajouter une propriété pour saisir la clé (nom de la propriété) et la valeur 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:. - Étiquettes (facultatif) : cliquez sur Ajouter une étiquette pour associer des paires d'étiquettes Clé et Valeur à la charge de travail.
- Propriétés Spark : cliquez sur Ajouter une propriété pour saisir la clé (nom de la propriété) et la valeur 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
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 suivante localement dans une fenêtre de terminal ou dans Cloud Shell.
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --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 dans laquelle votre charge de travail sera exécutée.
- Autres options : vous pouvez ajouter des options
gcloud dataproc batches submit sparkpour 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 commande1000transmis à 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 sous-réseaudefaultdans 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 de connectivité réseau, consultez Configuration réseau de 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 ce flag pour saisir les propriétés Spark compatibles que votre charge de travail par lot Spark doit utiliser.--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'URIgs://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 les fichiers locaux dans un dossier/dependenciesdu 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 ordinateur local.--ttl: vous pouvez ajouter l'option--ttlpour 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 suffixes,m,houd(secondes, minutes, heures ou jours). 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
--ttln'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 à s'exécuter indéfiniment si elle ne se termine pas). - Lots d'exécution 2.1 et versions ultérieures : si
--ttln'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 est4h.
- Lots d'exécution 1.1 ou 2.0 : si
--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 de nœud de calcul Dataproc.- Métastore Hive : la commande suivante configure une charge de travail par lot pour utiliser un métastore Hive autogéré externe à 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 :
- 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
- 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
- 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.
- Version d'exécution : utilisez l'option
--versionpour spécifier la version d'exécution de Managed Service pour Apache Spark pour 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 de la commande batches.create de Managed Service pour Apache Spark.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet Google Cloud .
- region : région Compute Engine dans laquelle Managed Service pour Apache Spark exécutera la charge de travail.
- PROJECT_ID : ID de votre projet Google Cloud . Les ID de projet sont listés dans la section Informations sur le projet du tableau de bord de la console Google Cloud .
- REGION : région de la session.
Remarques :
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 ressources d'unité de calcul des données (DCU) et de stockage aléatoire. Pour obtenir un exemple qui génère des UsageMetrics Managed Service pour Apache Spark afin d'estimer la consommation de ressources et les coûts de la charge de travail, consultez Tarifs de Managed Service pour Apache Spark.
Étapes suivantes
Apprenez-en davantage sur les points suivants :