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 adapte les ressources en fonction des besoins.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. 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 gratuits pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activez l'API Dataproc
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activez l'API Dataproc
Envoyer une charge de travail par lot Spark
Console
Dans la console Google Cloud, accédez à Dataproc Batchs. Cliquez sur Créer pour ouvrir la page Créer un lot.
Sélectionnez et remplissez les champs suivants sur la page pour envoyer une charge de travail par lot Spark qui calcule la valeur approximative de pi:
- Informations 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 minuscules. Caractères valides :
/[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 minuscules. Caractères valides :
- 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 sans serveur de Dataproc autre que celle par défaut.
- Classe principale :
org.apache.spark.examples.SparkPi
- Fichiers JAR (ce fichier est préinstallé dans l'environnement d'exécution Spark sans serveur de Dataproc).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Arguments: 1000.
- Configuration de l'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.
- Configuration réseau:le sous-réseau VPC qui exécute Dataproc sans serveur pour les charges de travail 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. La liste des sous-réseaux affiche les sous-réseaux du réseau sélectionné qui sont activés pour l'accès privé à Google.
- Properties (Propriétés) : saisissez les valeurs
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 utiliser un Metastore Hive externe autogéré .
- Vous pouvez utiliser un serveur d'historique persistant (PHS). Le PHS doit être situé dans la région où vous exécutez des charges de travail par lot.
- Informations 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 la 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 sera exécutée.
- Sous-réseau:le sous-réseau VPC qui exécute Dataproc sans serveur pour les charges de travail Spark doit être activé pour l'accès privé à Google et répondre aux autres exigences indiquées dans la section Configuration de 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 :- activer le sous-réseau du réseau par défaut pour la région pour l'accès privé à Google ; ou
- Utilisez l'option
--subnet=[SUBNET_URI]
dans la commande 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 répertorier 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 pi (les arguments d'entrée de la charge de travail sont inclus après "--").--properties
:vous pouvez ajouter l'option--properties
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 Dataproc sans serveur importera les dépendances des charges de travail. Le préfixe d'URIgs://
du bucket n'est pas obligatoire. Vous pouvez spécifier son chemin ou son nom, 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:Cette option est obligatoire si votre charge de travail par lot fait référence à des fichiers hébergés sur votre ordinateur local.--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
).- 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 ferme naturellement (ou s'exécute indéfiniment dans le cas contraire). - Lots d'environnement d'exécution 2.1 et versions ultérieures: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
.
- Lots d'exécution 1.1 ou 2.0:si
- Autres options:vous pouvez ajouter des options de commande
gcloud dataproc batches submit
pour spécifier d'autres options de charge de travail et propriétés Spark.- 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 \ --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 objet PHS sur un cluster Dataproc à nœud unique. Le PHS doit être situé dans la région où vous exécutez des 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 objet PHS sur un cluster Dataproc à nœud unique. Le PHS doit être situé dans la région où vous exécutez des charges de travail par lot, et le bucket-name Cloud Storage doit exister.
- Version d'exécution : utilisez l'option
--version
pour spécifier la version d'exécution de Dataproc sans serveur 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
- 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.
API
Cette section explique comment créer une charge de travail par lot pour calculer la valeur approximative de pi
à l'aide du service Dataproc sans serveur pour Spark batches.create
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants:
- project-id: ID de projet Google Cloud.
- region: région de Compute Engine dans laquelle Dataproc sans serveur exécutera la charge de travail. Remarques:
- Custom-container-image::spécifiez l'image de conteneur personnalisé en utilisant le format de nommage de l'image Docker:
{hostname}/{project-id}/{image}:{tag}
(par exemple, "gcr.io/my-project-id/my-image:1.0.1"). Remarque:Vous devez héberger votre conteneur personnalisé sur Container Registry. - Sous-réseau:le sous-réseau VPC qui exécute Dataproc sans serveur pour les charges de travail 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.
Si le sous-réseau du réseau
default
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 :- activer le sous-réseau du réseau par défaut pour la région pour l'accès privé à Google ; ou
- 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 répertorier 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
"1 000" est transmis à la charge de travail SparkPi et spécifie 1 000 itérations de la logique d'estimation de pi.Spark properties
:vous pouvez utiliser le champ RuntimeConfig.properties pour saisir les propriétés Spark compatibles que votre charge de travail par lot Spark doit utiliser.--ttl
:vous pouvez utiliser le champEnvironmentConfig.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 en tant que représentation JSON pour Duration. La valeur minimale est de 10 minutes et la valeur maximale de 14 jours.- 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 ferme naturellement (ou s'exécute indéfiniment dans le cas contraire). - Lots d'environnement 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 4 heures.
- Lots d'exécution 1.1 ou 2.0:si
- Autres options:
- Configurez la charge de travail par lot pour utiliser un métier externeHive Metastore autogéré.
- Utilisez un serveur d'historique persistant (PHS). Le PHS doit être situé 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 sans serveur Dataproc autre que celle 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
Dataproc sans serveur pour les charges de travail Spark consomme des unités de calcul de données (DCU, Data Compute Unit) et brasse les ressources de stockage. Pour obtenir un exemple affichant les métriques UsageMetrics de Dataproc pour estimer la consommation des ressources et les coûts des charges de travail, consultez la page Tarifs de Dataproc sans serveur .
Étapes suivantes
Apprenez-en davantage sur les points suivants :