Découvrez comment utiliser Serverless pour Apache Spark afin d'envoyer une charge de travail par lot sur une infrastructure de calcul gérée par Dataproc, qui ajuste 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.
-
Verify 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
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 :
- Informations sur le lot :
- 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]-/
. - Région : sélectionnez une région dans laquelle votre charge de travail sera exécutée.
- 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
- Conteneur :
- Batch type (Type de lot) : Spark.
- Version de l'environnement d'exécution : la version par défaut de l'environnement d'exécution est sélectionnée. Vous pouvez éventuellement spécifier une version d'exécution Serverless pour Apache Spark 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 de Serverless pour Apache Spark).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Arguments : 1 000.
- 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. Votre compte de service doit disposer du rôle Nœud de calcul Dataproc.
- Configuration réseau : sélectionnez un sous-réseau dans la région de la session. Serverless 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 Configuration du réseauGoogle Cloud sans serveur pour Apache Spark.
- Propriétés : saisissez le
Key
(nom de la propriété) et leValue
des propriétés Spark compatibles à définir sur votre charge de travail par lot Spark. Remarque : Contrairement aux propriétés de cluster de Dataproc sur Compute Engine, les propriétés de charge de travail Serverless pour Apache Spark n'incluent pas de préfixespark:
. - Autres options :
- Vous pouvez configurer la charge de travail par lot pour qu'elle utilise un Hive Metastore externe autogéré.
- Vous pouvez utiliser un serveur d'historique persistant (PHS). Le PHS doit se trouver dans la région où vous exécutez les charges de travail par lot.
- Informations sur le lot :
Cliquez sur Envoyer pour exécuter la charge de travail par lot Spark.
- REGION: Spécifiez la région dans laquelle votre charge de travail sera exécutée.
- Autres options : vous pouvez ajouter des indicateurs
gcloud dataproc batches submit spark
pour spécifier d'autres options de charge de travail et propriétés Spark.--version
: Vous pouvez spécifier une version d'exécution sans serveur pour Apache Spark autre que celle par défaut.--jars
: Le fichier JAR d'exemple 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 "-- ").--subnet
: Vous pouvez ajouter cet indicateur 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, Serverless pour Apache Spark sélectionne le sous-réseaudefault
dans la région de la session. Serverless pour Apache Spark active l'accès privé à Google sur le sous-réseau. Pour connaître les exigences en matière de connectivité réseau, consultez Configuration du réseauGoogle Cloud sans serveur pour Apache Spark.--properties
: vous pouvez ajouter cet indicateur pour saisir les propriétés Spark compatibles que votre charge de travail par lot Spark doit utiliser.--deps-bucket
: vous pouvez ajouter cet indicateur pour spécifier un bucket Cloud Storage dans lequel Serverless pour Apache Spark importera les dépendances de 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. Serverless 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 : Cet indicateur 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--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 des tâches 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 de 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 indéfiniment si elle ne se termine pas). - Lots 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
--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.- Hive Metastore : 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 ...
- Serveur d'historique persistant :
- La commande suivante crée un serveur d'historique persistant sur un cluster Dataproc à 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 le 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 serveur d'historique persistant sur un cluster Dataproc à 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 du runtime :
Utilisez l'indicateur
--version
pour spécifier la version du runtime Serverless 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
- project-id : ID de projet Google Cloud .
- region : région Compute Engine dans laquelle Serverless pour Apache Spark exécutera la charge de travail. Google Cloud
- 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.
Envoyer une charge de travail par lot Spark
Vous pouvez utiliser la console Google Cloud , la Google Cloud CLI ou l'API Serverless pour Apache Spark afin de créer et d'envoyer une charge de travail par lot Serverless pour Apache Spark.
Console
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 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
Remplacez l'élément suivant :
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
Serverless pour Apache Spark.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
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" ], "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 Serverless pour Apache Spark consomment des ressources de stockage Shuffle et des unités de calcul de données (DCU). Pour obtenir un exemple qui génère des UsageMetrics Dataproc afin d'estimer la consommation de ressources et les coûts des charges de travail, consultez Tarifs de l'infrastructure sans serveur pour Apache Spark.
Étapes suivantes
Apprenez-en davantage sur les points suivants :