Prima di iniziare
- Devi aver creato un cluster Google Kubernetes Engine (GKE) standard (non Autopilot) zonale o regionale con Workload Identity abilitato sul cluster.
Crea un cluster virtuale Dataproc su GKE
Un cluster virtuale Dataproc su GKE viene creato come piattaforma di deployment per i componenti Dataproc. È una risorsa virtuale e, a differenza di un cluster Dataproc su Compute Engine, non include VM master e worker Dataproc separate.
Dataproc su GKE crea node pool all'interno di un cluster GKE quando crei un cluster virtuale Dataproc su GKE.
I job Dataproc su GKE vengono eseguiti come pod su questi node pool. I node pool e la pianificazione dei pod sui node pool sono gestiti da GKE.
Crea più cluster virtuali. Puoi creare ed eseguire più cluster virtuali su un cluster GKE per ottenere un utilizzo delle risorse migliorato condividendo i pool di nodi tra i cluster virtuali.
- Ogni cluster virtuale:
- viene creato con proprietà separate, tra cui la versione del motore Spark e l'identità del carico di lavoro
- è isolato all'interno di uno spazio dei nomi GKE separato sul cluster GKE
- Ogni cluster virtuale:
Console
Nella console Google Cloud , vai alla pagina Cluster di Dataproc.
Fai clic su Crea cluster.
Nella finestra di dialogo Crea cluster Dataproc, 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 Dataproc su GKE. Questa regione deve essere la stessa in cui si trova il cluster GKE esistente (che selezionerai nel passaggio 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 staging Cloud Storage, puoi fare clic su Sfoglia per selezionare un bucket Cloud Storage esistente. Dataproc su GKE eseguirà lo staging degli artefatti nel bucket. Ignora questo campo per consentire a Dataproc su GKE di creare un bucket di staging.
Nel riquadro a sinistra, fai clic su Configura pool di nodi, poi nel riquadro Pool di nodi, fai clic su Aggiungi un pool.
- Per riutilizzare un pool di nodi Dataproc 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 Dataproc 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 Dataproc su GKE.
- Tipo di macchina del pool di nodi
- Piattaforma CPU
- Preemptibility
- Min: numero minimo di nodi.
- Max: numero massimo di nodi. Il conteggio massimo di nodi deve essere maggiore di 0.
- Fai clic su Aggiungi un pool per aggiungere altri pool di nodi. Tutti i pool di nodi devono avere la località. Puoi aggiungere un totale di quattro pool di nodi.
- Per riutilizzare un pool di nodi Dataproc su GKE esistente:
(Facoltativo) Se hai configurato un server di cronologia persistente (PHS) Dataproc da utilizzare per visualizzare la cronologia dei job Spark, fai clic su Personalizza cluster sui cluster Dataproc su GKE attivi ed eliminati. Poi, nel campo Cluster server di cronologia, cerca e scegli il tuo cluster PHS. Il cluster PHS deve trovarsi nella stessa regione del cluster virtuale Dataproc su GKE.
Fai clic su Crea per creare il cluster Dataproc. Il cluster Dataproc su GKE viene visualizzato in un elenco nella pagina Cluster. Il suo stato è Provisioning in corso fino a quando il cluster non è pronto per essere utilizzato, poi cambia in In esecuzione.
gcloud
Imposta le variabili di ambiente, quindi esegui il comando
gcloud dataproc clusters gke create
localmente o in Cloud Shell per creare un cluster Dataproc su GKE.
Imposta le variabili di ambiente:
Note:DP_CLUSTER=Dataproc on GKE cluster-name \ REGION=region \ GKE_CLUSTER=GKE cluster-name \ BUCKET=Cloud Storage bucket-name \ DP_POOLNAME=node pool-name PHS_CLUSTER=Dataproc PHS server name
DP_CLUSTER
: imposta il nome del cluster virtuale Dataproc, 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
: region deve corrispondere alla regione in cui si trova il cluster GKE.GKE_CLUSTER
: il nome del tuo cluster GKE esistente.BUCKET
: (facoltativo) puoi specificare il nome di un bucket Cloud Storage, che Dataproc utilizzerà per organizzare gli artefatti. Se non specifichi un bucket, Dataproc su GKE creerà un bucket di staging.DP_POOLNAME
: il nome di un node pool da creare nel cluster GKE.PHS_CLUSTER
: (facoltativo) server PHS Dataproc da utilizzare per visualizzare la cronologia dei job Spark nei cluster Dataproc su GKE attivi ed eliminati. Il cluster PHS deve trovarsi nella stessa regione del cluster virtuale Dataproc 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 Dataproc. Puoi utilizzare un identificatore, ad esempio3
,3.1
olatest
, oppure puoi specificare la versione secondaria completa, ad esempio3.1-dataproc-5
.--staging-bucket
: elimina questo flag per consentire a Dataproc su GKE di creare un bucket di staging.--pools
: questo flag viene utilizzato per specificare un pool di nodi nuovo o esistente che Dataproc creerà o utilizzerà per eseguire il workload. Elenco Impostazioni del pool di nodi Dataproc su GKE, separate da virgole, ad esempio: Devi specificare il pool di nodi--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
name
erole
. Le altre impostazioni pool di nodi sono facoltative. Puoi utilizzare più flag--pools
per specificare più pool di nodi. Almeno un pool di nodi deve avere il ruolodefault
. Tutti i pool di nodi devono avere la stessa posizione.--setup-workload-identity
: questo flag attiva i binding di Workload Identity. Queste associazioni consentono ai service account Kubernetes (KSA) di agire come service account VM Dataproc (identità del piano dati) predefinito del cluster virtuale.
REST
Completa un
virtualClusterConfig
nell'ambito di una richiesta
cluster.create
dell'API Dataproc.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT: ID progetto Google Cloud
- REGION: regione del cluster virtuale Dataproc (la stessa regione del cluster GKE esistente)
- DP_CLUSTER: nome del cluster Dataproc
- GKE_CLUSTER: nome del cluster GKE
- NODE_POOL: Nome node pool
- PHS_CLUSTER: Nome del cluster del server di cronologia permanente (PHS)
- BUCKET: (facoltativo) nome del bucket di staging. Lascia questo campo vuoto per consentire a Dataproc su GKE di creare un bucket di staging.
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 l'esecuzione del cluster virtuale Dataproc su GKE, invia un job Spark utilizzando la console Google Cloud , la CLI gcloud o l'API Dataproc jobs.submit
(utilizzando richieste HTTP dirette o le librerie client Cloud).
Esempio di job Spark della 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 della 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 della gcloud CLI:
gcloud dataproc jobs submit spark-r \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/r/dataframe.R
Esegui la pulizia
Elimina le seguenti risorse utilizzate in questa guida rapida che non vuoi continuare a utilizzare.
Elimina i node pool utilizzati dal cluster Dataproc su GKE.