Questo documento mostra come creare un cluster virtuale Managed Service for Apache Spark su GKE, e quindi eseguire un job Spark sul cluster.
Panoramica delle opzioni
Sebbene Managed Service for Apache Spark su GKE offra un controllo efficace per gli ambienti containerizzati, Google Cloud fornisce anche opzioni completamente gestite e serverless che possono semplificare le operazioni e accelerare lo sviluppo. Per un confronto delle opzioni di deployment di Spark Managed Service for Apache Spark, consulta Scegliere il servizio Spark migliore.
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non hai mai utilizzato Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
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.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
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.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init Devi aver creato un cluster Google Kubernetes Engine (GKE) zonale o regionale standard (non Autopilot) con Workload Identity abilitato sul cluster.
Ruoli obbligatori
Per eseguire gli esempi in questa pagina sono necessari alcuni ruoli IAM. A seconda delle policy dell'organizzazione, questi ruoli potrebbero essere già stati concessi. Per verificare le concessioni dei ruoli, consulta Devi concedere i ruoli?.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Ruoli utente
Per ottenere le autorizzazioni necessarie per creare un cluster Managed Service for Apache Spark, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Dataproc Editor (
roles/dataproc.editor) sul progetto - Utente account di servizio (
roles/iam.serviceAccountUser) sul service account predefinito di Compute Engine
Ruolo service account
Per assicurarti che il account di servizio predefinito di Compute Engine disponga delle autorizzazioni necessarie
per creare un cluster Managed Service for Apache Spark,
chiedi all'amministratore di concedere il
ruolo IAM Dataproc Worker (roles/dataproc.worker) al account di servizio predefinito di Compute Engine sul progetto.
Crea un cluster virtuale
Un cluster virtuale Managed Service for Apache Spark su GKE viene creato come piattaforma di deployment per i componenti Managed Service for Apache Spark. È una risorsa virtuale e, a differenza di un cluster Managed Service for Apache Spark su Compute Engine, non include VM master e worker Managed Service for Apache Spark separate.
Managed Service for Apache Spark su GKE crea node pool all'interno di un cluster GKE quando crei un cluster virtuale Managed Service for Apache Spark su GKE.
I job Managed Service for Apache Spark su GKE vengono eseguiti come pod in questi node pool. I node pool e la pianificazione dei pod nei node pool sono gestiti da GKE.
Crea più cluster virtuali. Puoi creare ed eseguire più cluster virtuali su un cluster GKE per migliorare l'utilizzo delle risorse condividendo i node pool tra i cluster virtuali.
- Ogni cluster virtuale:
- Viene creato con proprietà separate, tra cui la versione del motore Spark e Workload Identity
- È isolato all'interno di uno spazio dei nomi GKE separato sul cluster GKE
- Ogni cluster virtuale:
Console
Nella Google Cloud console, vai alla pagina Cluster di Managed Service for Apache Spark.
Fai clic su Crea cluster.
Nella finestra di dialogo Crea cluster Managed Service for Apache Spark, fai clic su Crea nella riga Cluster su GKE.
Nel riquadro Configura cluster:
- Nel campo Nome cluster, inserisci un nome per il cluster.
- Nell'elenco Regione, seleziona una regione per il cluster virtuale Managed Service for Apache Spark su GKE. Questa regione deve essere la stessa in cui si trova il cluster GKE esistente (che selezionerai nell'elemento successivo).
- Nel campo Cluster Kubernetes, fai clic su Sfoglia per selezionare la regione in cui si trova il cluster GKE esistente.
- (Facoltativo) Nel campo Bucket di gestione temporanea Cloud Storage, puoi fare clic su Sfoglia per selezionare un bucket Cloud Storage esistente. Managed Service for Apache Spark su GKE eseguirà la gestione temporanea degli artefatti nel bucket. Ignora questo campo per consentire a Managed Service for Apache Spark su GKE di creare un bucket di gestione temporanea.
Nel riquadro a sinistra, fai clic su Configura node pool, quindi nel riquadro Node pool, fai clic su Aggiungi un pool.
- Per riutilizzare un pool di nodi Managed Service for Apache Spark su GKE esistente:
- Fai clic su Riutilizza un node pool esistente.
- Inserisci il nome del pool di nodi esistente e seleziona il relativo Ruolo. Almeno un pool di nodi deve avere il ruolo DEFAULT.
- Fai clic su Fine.
- Per creare un nuovo pool di nodi Managed Service for Apache Spark su GKE:
- Fai clic su Crea un nuovo node pool.
- Inserisci i seguenti valori del pool di nodi:
- Nome node pool
- Ruolo: almeno un pool di nodi deve avere il ruolo DEFAULT.
- Località: specifica una zona all'interno della regione del cluster Managed Service for Apache Spark su GKE.
- Tipo di macchina del node pool
- Piattaforma CPU
- Preemptivity
- Min: numero minimo di nodi.
- Max: numero massimo di nodi. Il numero massimo di nodi deve essere maggiore di 0.
- Fai clic su Aggiungi un pool per aggiungere altri node pool. Tutti i node pool devono avere la località. Puoi aggiungere un totale di quattro node pool.
- Per riutilizzare un pool di nodi Managed Service for Apache Spark su GKE esistente:
(Facoltativo) Se hai configurato un server di cronologia permanente (PHS) Managed Service for Apache Spark da utilizzare per visualizzare la cronologia dei job Spark sui cluster Managed Service for Apache Spark su GKE attivi ed eliminati, fai clic su Personalizza cluster. Quindi, nel campo Cluster server di cronologia , cerca e scegli il cluster PHS. Il cluster PHS deve trovarsi nella stessa regione del cluster virtuale Managed Service for Apache Spark su GKE.
Fai clic su Crea per creare il cluster Managed Service for Apache Spark. Il cluster Managed Service for Apache Spark su GKE viene visualizzato in un elenco nella pagina Cluster. Il suo stato è Provisioning in corso finché il cluster non è pronto per essere utilizzato, dopodiché lo stato passa a In esecuzione.
gcloud
Imposta le variabili di ambiente, quindi esegui il
gcloud dataproc clusters gke create
comando localmente o in Cloud Shell per creare un cluster Managed Service for Apache Spark su GKE.
Imposta le variabili di ambiente:
Note: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: imposta il nome del cluster virtuale Managed Service for Apache Spark, che deve iniziare con una lettera minuscola, seguita da un massimo di 54 lettere minuscole, numeri o trattini. Non può terminare con un trattino.REGION: la region deve essere la stessa in cui si trova il cluster GKE.GKE_CLUSTER: il nome del cluster GKE esistente.BUCKET: (facoltativo) puoi specificare il nome di un bucket Cloud Storage, che Managed Service for Apache Spark utilizzerà per la gestione temporanea degli artefatti. Se non specifichi un bucket, Managed Service for Apache Spark su GKE creerà un bucket di gestione temporanea.DP_POOLNAME: il nome di un node pool da creare sul cluster GKE.PHS_CLUSTER: (facoltativo) server PHS Managed Service for Apache Spark da utilizzare per visualizzare la cronologia dei job Spark sui cluster Managed Service for Apache Spark su GKE attivi ed eliminati. Il cluster PHS deve trovarsi nella stessa regione del cluster virtuale Managed Service for Apache Spark su GKE.
Esegui il comando:
Note: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: la versione dell'immagine Spark utilizzata nel cluster Managed Service for Apache Spark. Puoi utilizzare un identificatore, ad esempio3,3.1olatest, oppure puoi specificare la versione secondaria completa, ad esempio3.1-dataproc-5.--staging-bucket: elimina questo flag per consentire a Managed Service for Apache Spark su GKE di creare un bucket di gestione temporanea.--pools: questo flag viene utilizzato per specificare un pool di nodi nuovo o esistente che Managed Service for Apache Spark creerà o utilizzerà per eseguire il carico di lavoro. Elenca le impostazioni del pool di nodi Managed Service for Apache Spark su GKE, separate da virgole, ad esempio: Devi specificare il--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
namee ilroledel pool di nodi. Le altre impostazioni pool di nodi sono facoltative. Puoi utilizzare più flag--poolsper specificare più node pool. Almeno un pool di nodi deve avere il ruolodefault. Tutti i node pool devono avere la stessa località.--setup-workload-identity: questo flag abilita i binding di Workload Identity. Questi binding consentono ai service account Kubernetes (KSA) di fungere da service account VM Managed Service for Apache Spark predefinito (identità del piano dati) del cluster virtuale.
REST
Completa un
virtualClusterConfig
come parte di una
cluster.create
richiesta API.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT: ID progetto Google Cloud
- REGION: regione del cluster virtuale Dataproc (stessa regione della regione del cluster GKE esistente)
- DP_CLUSTER: nome del cluster Dataproc
- GKE_CLUSTER: nome del cluster GKE
- NODE_POOL: nome del node pool
- PHS_CLUSTER: nome del cluster del server di cronologia permanente (PHS)
- BUCKET: (facoltativo) nome del bucket di gestione temporanea. Lascia questo campo vuoto per consentire a Managed Service for Apache Spark su GKE di creare un bucket di gestione temporanea.
Metodo HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
Corpo JSON della richiesta:
{
"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"
}
}
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"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"
}
}
}
Invia un job Spark
Dopo che il cluster virtuale Managed Service for Apache Spark su GKE è in esecuzione,
invia un job Spark
utilizzando la Google Cloud console,
gcloud CLI o l'
API
jobs.submit
Managed Service for Apache Spark (utilizzando richieste HTTP dirette o le
librerie client Cloud).
Esempio di job 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
Esempio di job PySpark gcloud CLI:
gcloud dataproc jobs submit pyspark \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
local:///usr/lib/spark/examples/src/main/python/pi.py \
-- 10
Esempio di job SparkR gcloud CLI:
gcloud dataproc jobs submit spark-r \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
local:///usr/lib/spark/examples/src/main/r/dataframe.R
Libera spazio
Elimina le seguenti risorse utilizzate in questa guida rapida che non vuoi continuare a utilizzare.
Elimina i node pool utilizzati dal cluster Managed Service for Apache Spark su GKE.