Découvrez comment utiliser Dataproc sans serveur pour envoyer une charge de travail par lot sur une infrastructure de calcul gérée par Dataproc qui évalue les ressources selon les besoins.
Avant de commencer
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
- Assurez-vous que l'accès privé à Google est activé dans le sous-réseau VPC régional où vous exécuterez votre charge de travail. Pour en savoir plus, consultez la section Envoyer une charge de travail par lot Spark.
Envoyer une charge de travail par lot Spark
Vous pouvez utiliser la console Google Cloud, la Google Cloud CLI ou l'API Dataproc Serverless pour créer et envoyer une charge de travail par lot Dataproc Serverless pour Spark.
Console
Dans la console Google Cloud, accédez à "Lots Dataproc".
Cliquez sur Créer.
Envoyez une charge de travail par lot Spark qui calcule la valeur approximative de pi en sélectionnant et en remplissant les champs suivants:
- Infos sur le lot:
- ID de lot: spécifiez un ID pour votre charge de travail par lot. Cette valeur doit comporter entre 4 et 63 caractères en minuscules. Les caractères valides sont
/[a-z][0-9]-/
. - Région: sélectionnez une région dans laquelle votre charge de travail sera exécutée.
- ID de lot: spécifiez un ID pour votre charge de travail par lot. Cette valeur doit comporter entre 4 et 63 caractères en minuscules. Les caractères valides sont
- Conteneur:
- Type de lot: Spark.
- Version d'exécution: la version d'exécution par défaut est sélectionnée. Vous pouvez éventuellement spécifier une version d'exécution Dataproc sans serveur autre que la version par défaut.
- Classe principale:
org.apache.spark.examples.SparkPi
- Fichiers JAR (ce fichier est préinstallé dans l'environnement d'exécution Spark de Dataproc sans serveur).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Arguments: 1 000.
- Configuration d'exécution: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.
Configuration réseau:le sous-réseau VPC qui exécute les charges de travail Dataproc sans serveur pour Spark doit être activé pour l'accès privé à Google et répondre aux autres exigences listées dans la section Configuration du réseau Dataproc sans serveur pour Spark.
Les sélecteurs Réseau principal et Sous-réseau répertorient les réseaux avec des sous-réseaux dans la région de charge de travail sélectionnée pour lesquels l'accès privé à Google est activé. Sélectionnez un réseau et un sous-réseau dans la liste. Si aucun réseau ni sous-réseau n'est listé, vous pouvez activer l'accès privé à Google sur un sous-réseau VPC dans la région de charge de travail actuellement sélectionnée ou remplacer la région de charge de travail par une région avec un sous-réseau PGA activé, puis sélectionner ce réseau et ce sous-réseau.
Properties (Propriétés) : saisissez les
Key
(nom de la propriété) etValue
des propriétés Spark compatibles à définir sur votre charge de travail par lot Spark. Remarque: Contrairement aux propriétés de cluster Dataproc sur Compute Engine, les propriétés de charge de travail Dataproc sans serveur pour Spark n'incluent pas de préfixespark:
.Autres options:
- Vous pouvez configurer la charge de travail par lot pour qu'elle utilise un métastore Hive externe géré par l'utilisateur.
- Vous pouvez utiliser un serveur d'historique persistant (PHS). Le PHS doit se trouver dans la région où vous exécutez des charges de travail par lot.
- Infos sur le lot:
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 dataproc batches submit spark
de gcloud CLI suivante en local dans une fenêtre de terminal ou dans Cloud Shell.
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
Remarques :
- REGION: Spécifiez la région dans laquelle votre charge de travail s'exécutera.
- Sous-réseau:le sous-réseau VPC qui exécute les charges de travail Dataproc sans serveur pour Spark doit être activé pour l'accès privé à Google et répondre aux autres exigences indiquées dans la section Configuration du réseau Dataproc sans serveur pour Spark.
Si le sous-réseau du réseau
default
pour la région spécifiée dans la commandegcloud dataproc batches submit
n'est pas activé pour l'accès privé à Google, vous devez effectuer l'une des opérations suivantes :- Activez le sous-réseau du réseau par défaut pour la région pour l'accès privé à Google.
- Utilisez l'option
--subnet=SUBNET_URI
pour spécifier un sous-réseau pour lequel l'accès privé à Google est activé. Vous pouvez exécuter la commandegcloud compute networks describe <var>NETWORK_NAME</var>
pour lister les URI des sous-réseaux d'un réseau.
--jars
: l'exemple de fichier JAR est préinstallé dans l'environnement d'exécution Spark. L'argument de commande1000
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 "--").--properties
: vous pouvez ajouter cet indicateur pour saisir les propriétés Spark compatibles à utiliser pour votre charge de travail par lot Spark.--deps-bucket
: vous pouvez ajouter cet indicateur pour spécifier un bucket Cloud Storage dans lequel Dataproc sans serveur importera les dépendances de la charge de travail. Le préfixe URIgs://
du bucket n'est pas obligatoire. Vous pouvez spécifier le chemin d'accès ou le nom du bucket, par exemple "mybucketname". Dataproc sans serveur pour Spark importe le ou les fichiers locaux dans un dossier/dependencies
du bucket avant d'exécuter la charge de travail par lot. Remarque:Cet indicateur est obligatoire si votre charge de travail par lot fait référence à des fichiers sur votre machine locale.--ttl
: vous pouvez ajouter l'option--ttl
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 suffixes
,m
,h
oud
(secondes, minutes, heures ou jours). La valeur minimale est de 10 minutes (10m
) et la valeur maximale de 14 jours (14d
).- Lot d'exécution 1.1 ou 2.0:si
--ttl
n'est pas spécifié pour une charge de travail de lot d'exécution 1.1 ou 2.0, la charge de travail peut s'exécuter jusqu'à ce qu'elle se termine naturellement (ou s'exécuter indéfiniment si elle ne se termine pas). - Lot 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 est4h
.
- Lot 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 Nœud de calcul Dataproc.- Autres options:vous pouvez ajouter des indicateurs
gcloud dataproc batches submit spark
pour spécifier d'autres options de charge de travail et des propriétés Spark.- Métastore Hive: la commande suivante configure une charge de travail par lot pour qu'elle utilise 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 ...
- Persistent History Server (serveur d'historique persistant)
- La commande suivante crée un PHS sur un cluster Dataproc à nœud unique. Le PHS doit se trouver dans la région dans laquelle 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 Dataproc à nœud unique. Le PHS doit se trouver dans la région dans laquelle vous exécutez les charges de travail par lot, et le bucket-name Cloud Storage doit exister.
- Version d'exécution : utilisez l'indicateur
--version
pour spécifier la version d'exécution Dataproc sans serveur 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
- Métastore Hive: la commande suivante configure une charge de travail par lot pour qu'elle utilise un métastore Hive autogéré externe à l'aide d'une configuration Spark standard.
API
Cette section explique comment créer une charge de travail par lot pour calculer la valeur approximative de pi
à l'aide de batches.create
de Dataproc sans serveur pour Spark.
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 Dataproc sans serveur exécutera la charge de travail. Remarques:
RuntimeConfig.containerImage
: vous pouvez spécifier une image de conteneur personnalisée à l'aide du format d'attribution de nom d'image Docker:{hostname}/{project-id}/{image}:{tag}
, par exemple, "gcr.io/mon-ID-de-projet/mon-image:1.0.1". Remarque:Vous devez héberger votre conteneur personnalisé sur Container Registry.ExecutionConfig.subnetworkUri
:le sous-réseau VPC qui exécute les charges de travail Dataproc sans serveur pour Spark doit être activé pour l'accès privé à Google et répondre aux autres exigences indiquées dans la section Configuration du réseau Dataproc sans serveur pour Spark. Si le sous-réseau du réseaudefault
pour la région spécifiée n'est pas activé pour l'accès privé à Google, vous devez effectuer l'une des opérations suivantes :- Activez le sous-réseau du réseau par défaut pour la région pour l'accès privé à Google.
- Utilisez le champ
ExecutionConfig.subnetworkUri
pour spécifier un sous-réseau sur lequel l'accès privé à Google est activé. Vous pouvez exécuter la commandegcloud compute networks describe [NETWORK_NAME]
pour lister les URI des sous-réseaux d'un réseau.
sparkBatch.jarFileUris
: l'exemple de fichier JAR est préinstallé dans l'environnement d'exécution Spark. LesparkBatch.args
"1000" est transmis à la charge de travail SparkPi et spécifie 1 000 itérations de la logique d'estimation de pi.RuntimeConfig.properties
:ce champ vous permet de saisir les propriétés Spark compatibles à utiliser pour votre charge de travail par lot Spark.ExecutionConfig.serviceAccount
: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 être doté du rôle Nœud de calcul Dataproc.EnvironmentConfig.ttl
:ce champ vous permet de 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 sous la forme de représentation JSON pour Durée. La valeur minimale est de 10 minutes et la valeur maximale de 14 jours.- Lot d'exécution 1.1 ou 2.0:si
--ttl
n'est pas spécifié pour une charge de travail de lot d'exécution 1.1 ou 2.0, la charge de travail est autorisée à s'exécuter jusqu'à son arrêt naturel (ou à s'exécuter indéfiniment si elle ne s'arrête pas). - Lot 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 de quatre heures.
- Lot d'exécution 1.1 ou 2.0:si
- Autres options:
- Configurez la charge de travail par lot pour qu'elle utilise un métastore Hive externe géré par l'utilisateur.
- Utilisez un serveur d'historique persistant (PHS). Le PHS doit se trouver dans la région où vous exécutez des charges de travail par lot.
- Utilisez le champ
RuntimeConfig.version
dans la requêtebatches.create
pour spécifier une version d'exécution Dataproc sans serveur non par défaut. .
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" ], "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":{ "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 Dataproc Serverless pour Spark consomment des ressources de stockage et d'unité de calcul de données (DCU). Pour obtenir un exemple qui génère des UsageMetrics Dataproc afin d'estimer la consommation et les coûts des ressources de la charge de travail, consultez la page Tarifs de Dataproc sans serveur.
Étape suivante
Apprenez-en davantage sur les points suivants :