Ce document vous explique comment créer un cluster virtuel Managed Service pour Apache Spark sur GKE, puis comment exécuter un job Spark sur le cluster.
Présentation des options
Bien que Managed Service pour Apache Spark sur GKE offre un contrôle puissant pour les environnements conteneurisés, Google Cloud il propose également des options entièrement gérées et sans serveur qui peuvent simplifier les opérations et accélérer le développement. Pour comparer les options de déploiement de Spark Managed Service pour Apache Spark, consultez Choisir le meilleur service Spark.
Avant de commencer
- 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.
-
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 you have the permissions required to complete this guide.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
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 you have the permissions required to complete this guide.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init Vous devez avoir créé un cluster standard Google Kubernetes Engine (GKE) zonal ou régional (et non un cluster Autopilot) sur lequel Workload Identity est activé.
Rôles requis
Certains rôles IAM sont requis pour exécuter les exemples de cette page. En fonction des règles d'administration, ces rôles peuvent déjà avoir été attribués. Pour vérifier les attributions de rôles, consultez la section 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 créer un cluster Managed Service pour Apache Spark, 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 créer un cluster Managed Service pour Apache Spark, 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.
Créer un cluster virtuel
Un cluster virtuel Managed Service pour Apache Spark sur GKE est créé en tant que plate-forme de déploiement pour les composants Managed Service pour Apache Spark. Il s'agit d'une ressource virtuelle qui, contrairement à un cluster Managed Service pour Apache Spark sur Compute Engine, n'inclut pas de VM maître et de nœud de calcul Managed Service pour Apache Spark distinctes.
Managed Service pour Apache Spark sur GKE crée des pools de nœuds dans un cluster GKE lorsque vous créez un cluster virtuel Managed Service pour Apache Spark sur GKE.
Les jobs Managed Service pour Apache Spark sur GKE sont exécutés en tant que pods sur ces pools de nœuds. Les pools de nœuds et la planification des pods sur les pools de nœuds sont gérés par GKE.
Créer plusieurs clusters virtuels Vous pouvez créer et exécuter plusieurs clusters virtuels sur un cluster GKE pour améliorer l'utilisation des ressources en partageant des pools de nœuds entre les clusters virtuels.
- Chaque cluster virtuel :
- est créé avec des propriétés distinctes, comme la version de Spark et l'identité de la charge de travail.
- est isolée dans un espace de noms GKE distinct sur le cluster GKE.
- Chaque cluster virtuel :
Console
Dans la Google Cloud console, accédez à la page Clusters de Managed Service pour Apache Spark.
Cliquez sur Créer un cluster.
Dans la boîte de dialogue Créer un cluster Managed Service pour Apache Spark, cliquez sur Créer dans la ligne Cluster sur GKE.
Dans le panneau Configurer le cluster :
- Dans le champ Nom du cluster, saisissez le nom du cluster.
- Dans la liste Région, sélectionnez une région pour le cluster virtuel Managed Service pour Apache Spark sur GKE. Cette région doit être la même que celle dans laquelle se trouve votre cluster GKE existant (que vous sélectionnez dans l'élément suivant).
- Dans le champ Cluster Kubernetes, cliquez sur Parcourir pour sélectionner la région dans laquelle se trouve votre cluster GKE existant.
- Facultatif : Dans le champ Bucket de préproduction Cloud Storage, vous pouvez cliquer sur Parcourir pour sélectionner un bucket Cloud Storage existant. Managed Service pour Apache Spark sur GKE préproduira les artefacts dans le bucket. Ignorez ce champ pour que Managed Service pour Apache Spark sur GKE crée un bucket de préproduction.
Dans le panneau de gauche, cliquez sur Configurer les pools de nœuds, puis, dans le panneau Pools de nœuds , cliquez sur Ajouter un pool.
- Pour réutiliser un pool de nœuds Managed Service pour Apache Spark sur GKE existant :
- Cliquez sur Réutiliser un pool de nœuds existant.
- Saisissez le nom du pool de nœuds existant et sélectionnez son rôle. Au moins un pool de nœuds doit avoir le rôle par défaut.
- Cliquez sur OK.
- Pour créer un pool de nœuds Managed Service pour Apache Spark sur GKE :
- Cliquez sur Créer un pool de nœuds.
- Saisissez les valeurs suivantes pour le pool de nœuds :
- Nom du pool de nœuds
- Rôle : au moins un pool de nœuds doit avoir le rôle par défaut.
- Emplacement : spécifiez une zone dans la région du cluster Managed Service pour Apache Spark sur GKE.
- Type de machine du pool de nœuds
- Plate-forme du processeur
- Préemptibilité
- Min : nombre minimal de nœuds.
- Max : nombre maximal de nœuds. Le nombre maximal de nœuds doit être supérieur à 0.
- Cliquez sur Ajouter un pool pour ajouter d'autres pools de nœuds. Tous les pools de nœuds doivent avoir l'emplacement. Vous pouvez ajouter un total de quatre pools de nœuds.
- Pour réutiliser un pool de nœuds Managed Service pour Apache Spark sur GKE existant :
(Facultatif) Si vous avez configuré un serveur d'historique persistant (PHS) Managed Service pour Apache Spark afin d'afficher l'historique des jobs Spark sur les clusters Managed Service pour Apache Spark sur GKE actifs et supprimés, cliquez sur Personnaliser le cluster. Ensuite, dans le champ Cluster du serveur d'historique , recherchez et choisissez votre cluster PHS. Le cluster PHS doit se trouver dans la même région que le cluster virtuel Managed Service pour Apache Spark sur GKE.
Cliquez sur Créer pour créer le cluster Managed Service pour Apache Spark. Votre cluster Managed Service pour Apache Spark sur GKE s'affiche dans une liste sur la page Clusters. Son état est Provisionnement jusqu'à ce qu'il soit prêt à être utilisé, puis il passe à En cours d'exécution.
gcloud
Définissez des variables d'environnement, puis exécutez la
gcloud dataproc clusters gke create
commande en local ou dans Cloud Shell pour créer un cluster Managed Service pour Apache Spark sur GKE.
Définissez les variables d'environnement :
Remarques :DP_CLUSTER=Managed Service for Apache Spark on GKE cluster-name \ REGION=region \ GKE_CLUSTER=GKE cluster-name \ BUCKET=Cloud Storage bucket-name \ DP_POOLNAME=node pool-name PHS_CLUSTER=Managed Service for Apache Spark PHS server name
DP_CLUSTER: définissez le nom du cluster virtuel Managed Service pour Apache Spark, qui doit commencer par une lettre minuscule, suivie de 54 caractères (lettres minuscules, chiffres ou traits d'union). Il ne peut pas se terminer par un trait d'union.REGION: le champ region doit être identique à la région où se trouve le cluster GKE.GKE_CLUSTER: le nom de votre cluster GKE existant.BUCKET: (facultatif) vous pouvez spécifier le nom d'un bucket Cloud Storage, que Managed Service pour Apache Spark utilisera pour organiser les artefacts. Si vous ne spécifiez pas de bucket, Managed Service pour Apache Spark sur GKE crée un bucket de préproduction.DP_POOLNAME: le nom d'un pool de nœuds à créer sur le cluster GKE.PHS_CLUSTER: (facultatif) le Serveur PHS Managed Service pour Apache Spark à utiliser pour afficher l'historique des tâches Spark sur les clusters Managed Service pour Apache Spark actifs et supprimés sur GKE. Le cluster PHS doit se trouver dans la même région que le cluster virtuel Managed Service pour Apache Spark sur GKE.
Exécutez la commande suivante :
Remarques :gcloud dataproc clusters gke create ${DP_CLUSTER} \ --region=${REGION} \ --gke-cluster=${GKE_CLUSTER} \ --spark-engine-version=latest \ --staging-bucket=${BUCKET} \ --pools="name=${DP_POOLNAME},roles=default" \ --setup-workload-identity \ --history-server-cluster=${PHS_CLUSTER}--spark-engine-version: version de l'image Spark utilisée sur le cluster Managed Service pour Apache Spark. Vous pouvez utiliser un identifiant, tel que3,3.1oulatest, ou spécifier la sous-version complète, telle que3.1-dataproc-5.--staging-bucket: supprimez cet indicateur pour que Managed Service pour Apache Spark sur GKE crée un bucket de préproduction.--pools: cet indicateur permet de spécifier un pool de nœuds nouveau ou existant que Managed Service pour Apache Spark créera ou utilisera pour exécuter la charge de travail. Affichez la liste des paramètres du pool de nœuds Managed Service pour Apache Spark sur GKE , séparés par des virgules, par exemple : Vous devez spécifier le--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
nameet leroledu pool de nœuds. Les autres paramètres du pool de nœuds sont facultatifs. Vous pouvez utiliser plusieurs indicateurs--poolspour spécifier plusieurs pools de nœuds. Au moins un pool de nœuds doit avoir le rôledefault. Tous les pools de nœuds doivent avoir le même emplacement.--setup-workload-identity: cet indicateur active les liaisons Workload Identity. Ces liaisons permettent aux comptes de service Kubernetes (KSA) d'agir en tant que compte de service de VM Managed Service pour Apache Spark par défaut (identité du plan de données) du cluster virtuel.
REST
Remplissez un
virtualClusterConfig
dans le cadre d'une requête API
cluster.create.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT : l'ID du projet Google Cloud
- REGION : la région de cluster virtuel Dataproc (même région que le cluster GKE existant)
- DP_CLUSTER : le nom du cluster Dataproc
- GKE_CLUSTER : le nom du cluster GKE
- NODE_POOL : le nom du pool de nœuds
- PHS_CLUSTER : le nom du cluster du serveur d'historique persistant (PHS)
- BUCKET : (facultatif) nom du bucket de préproduction. Laissez ce champ vide pour que Managed Service pour Apache Spark sur GKE crée un bucket de préproduction.
Méthode HTTP et URL :
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
Corps JSON de la requête :
{
"clusterName":"DP_CLUSTER",
"projectId":"PROJECT",
"virtualClusterConfig":{
"auxiliaryServicesConfig":{
"sparkHistoryServerConfig":{
"dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER"
}
},
"kubernetesClusterConfig":{
"gkeClusterConfig":{
"gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER",
"nodePoolTarget":[
{
"nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL",
"roles":[
"DEFAULT"
]
}
]
},
"kubernetesSoftwareConfig":{
"componentVersion":{
"SPARK":"latest"
}
}
},
"stagingBucket":"BUCKET"
}
}
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{
"projectId":"PROJECT",
"clusterName":"DP_CLUSTER",
"status":{
"state":"RUNNING",
"stateStartTime":"2022-04-01T19:16:39.865716Z"
},
"clusterUuid":"98060b77-...",
"statusHistory":[
{
"state":"CREATING",
"stateStartTime":"2022-04-01T19:14:27.340544Z"
}
],
"labels":{
"goog-dataproc-cluster-name":"DP_CLUSTER",
"goog-dataproc-cluster-uuid":"98060b77-...",
"goog-dataproc-location":"REGION",
"goog-dataproc-environment":"prod"
},
"virtualClusterConfig":{
"stagingBucket":"BUCKET",
"kubernetesClusterConfig":{
"kubernetesNamespace":"dp-cluster",
"gkeClusterConfig":{
"gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER",
"nodePoolTarget":[
{
"nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL",
"roles":[
"DEFAULT"
]
}
]
},
"kubernetesSoftwareConfig":{
"componentVersion":{
"SPARK":"3.1-..."
},
"properties":{
"dpgke:dpgke.unstable.outputOnly.endpoints.sparkHistoryServer":"https://...",
"spark:spark.eventLog.dir":"gs://BUCKET/.../spark-job-history",
"spark:spark.eventLog.enabled":"true"
}
}
},
"auxiliaryServicesConfig":{
"sparkHistoryServerConfig":{
"dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER"
}
}
}
Envoyer une tâche Spark
Une fois votre cluster virtuel Managed Service pour Apache Spark sur GKE en cours d'exécution,
envoyez un job Spark
à l'aide de la Google Cloud console,
gcloud CLIou de l'API
Managed Service pour Apache Spark
jobs.submit (à l'aide de requêtes HTTP directes ou des
bibliothèques clientes Cloud).
Exemple de tâche Spark gcloud CLI :
gcloud dataproc jobs submit spark \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
--class=org.apache.spark.examples.SparkPi \
--jars=local:///usr/lib/spark/examples/jars/spark-examples.jar \
-- 1000
Exemple de tâche PySpark gcloud CLI :
gcloud dataproc jobs submit pyspark \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
local:///usr/lib/spark/examples/src/main/python/pi.py \
-- 10
Exemple de tâche SparkR gcloud CLI :
gcloud dataproc jobs submit spark-r \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
local:///usr/lib/spark/examples/src/main/r/dataframe.R
Libérer de l'espace
Supprimez toutes les ressources suivantes utilisées dans ce guide de démarrage rapide que vous ne souhaitez plus utiliser.
Supprimez le cluster Managed Service pour Apache Spark sur GKE.
Supprimez les pools de nœuds utilisés par le cluster Managed Service pour Apache Spark sur GKE.