Google Distributed Cloud (GDC) air-gapped fornisce un container Dataproc per Spark. Si tratta di un
ambiente Apache Spark per l'elaborazione dei dati. Per ulteriori informazioni su Apache
Spark, vedi https://spark.apache.org/
. Utilizza i container di Dataproc Container for Spark per eseguire applicazioni Spark nuove o esistenti all'interno di un cluster Distributed Cloud Kubernetes con modifiche minime. Se hai familiarità con gli strumenti Spark, puoi continuare a utilizzarli.
Definisci l'applicazione Spark in un file YAML e Distributed Cloud alloca le risorse per te. Il container Dataproc per Spark si avvia in pochi secondi. Gli esecutori Spark vengono scalati o arrestati in base alle tue esigenze.
Configura i container da Dataproc Container per Spark su Distributed Cloud per utilizzare hardware specializzato, come nodi hardware specializzati o GPU.
Esegui il deployment del servizio Dataproc Container for Spark
L'amministratore della piattaforma deve installare i servizi Marketplace per te prima che tu possa utilizzarli. Contatta il tuo PA se hai bisogno di Dataproc Container per Spark. Per ulteriori informazioni, consulta Installare un pacchetto software GDC Marketplace.
Prerequisiti per l'esecuzione delle applicazioni Spark
Per utilizzare il servizio Dataproc Container for Spark, devi disporre di un account di servizio nei cluster utente. Il container Dataproc per Spark crea un pod driver Spark per eseguire un'applicazione Spark. Un pod driver Spark ha bisogno di un service account Kubernetes nello spazio dei nomi del pod con le autorizzazioni per eseguire le seguenti azioni:
- Crea, recupera, elenca ed elimina pod esecutore.
- Crea un servizio headless Kubernetes per il driver.
Prima di eseguire un'applicazione Spark, completa i seguenti passaggi per assicurarti di disporre di un account di servizio con le autorizzazioni precedenti nello spazio dei nomi foo
:
Crea un account di servizio per un pod driver Spark da utilizzare nello spazio dei nomi
foo
:kubectl create serviceaccount spark --kubeconfig AO_USER_KUBECONFIG --namespace=foo
Crea un ruolo per concedere le autorizzazioni per creare, recuperare, elencare ed eliminare i pod executor e crea un servizio headless Kubernetes per il driver nello spazio dei nomi
foo
:kubectl create role spark-driver --kubeconfig AO_USER_KUBECONFIG --verb=* \ --resource=pods,services,configmaps,persistentvolumeclaims \ --namespace=foo
Crea un'associazione dei ruoli per concedere all'account di servizio l'accesso al ruolo nello spazio dei nomi
foo
:kubectl create --kubeconfig AO_USER_KUBECONFIG \ rolebinding spark-spark-driver \ --role=spark-driver --serviceaccount=foo:spark \ --namespace=foo
Esegui applicazioni Spark 3 di esempio
La containerizzazione delle applicazioni Spark semplifica l'esecuzione di applicazioni di big data
on-premise utilizzando Distributed Cloud. In qualità di operatore dell'applicazione (AO), esegui le applicazioni Spark specificate negli oggetti GKE del tipo di risorsa personalizzata SparkApplication
.
Per eseguire e utilizzare un'applicazione Apache Spark 3 su Distributed Cloud, completa i seguenti passaggi:
Esamina l'immagine
spark-operator
nel tuo progetto per trovare$DATAPROC_IMAGE
a cui fare riferimento nella tua applicazione Spark:export DATAPROC_IMAGE=$(kubectl get pod --kubeconfig AO_USER_KUBECONFIG \ --selector app.kubernetes.io/name=spark-operator -n foo \ -o=jsonpath='{.items[*].spec.containers[0].image}' \ | sed 's/spark-operator/dataproc/')
Ad esempio:
export DATAPROC_IMAGE=10.200.8.2:10443/dataproc-service/private-cloud-devel/dataproc:3.1-dataproc-17
Scrivi una specifica
SparkApplication
e archiviala in un file YAML. Per maggiori informazioni, consulta la sezione Scrivere una specifica dell'applicazione Spark.Invia, esegui e monitora l'applicazione Spark come configurato in una specifica
SparkApplication
sul cluster GKE con il comandokubectl
. Per saperne di più, consulta la sezione Esempi di applicazione.Controlla lo stato della richiesta.
(Facoltativo) Esamina i log dell'applicazione. Per maggiori informazioni, consulta la sezione Visualizzare i log di un'applicazione Spark 3.
Utilizza l'applicazione Spark per raccogliere e mostrare all'utente lo stato del driver e degli esecutori.
Scrivi una specifica dell'applicazione Spark
Una specifica SparkApplication
include i seguenti componenti:
- Il campo
apiVersion
. - Il campo
kind
. - Il campo
metadata
. - La sezione
spec
.
Per maggiori informazioni, consulta la pagina Writing a SparkApplication Spec su GitHub: https://github.com/kubeflow/spark-operator/blob/gh-pages/docs/user-guide.md#writing-a-sparkapplication-spec
Esempi di applicazioni
Questa sezione include i seguenti esempi con le relative specifiche
SparkApplication
per eseguire le applicazioni Spark:
Spark Pi
Questa sezione contiene un esempio per eseguire un'applicazione Spark Pi a elevato utilizzo di risorse di calcolo che stima 𝛑 (pi greco) lanciando freccette in un cerchio.
Segui questi passaggi per eseguire Spark Pi:
Applica il seguente esempio di specifica
SparkApplication
nel cluster utente:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi namespace: foo spec: type: Python pythonVersion: "3" mode: cluster image: "${DATAPROC_IMAGE?}" imagePullPolicy: IfNotPresent mainApplicationFile: "local:///usr/lib/spark/examples/src/main/python/pi.py" sparkVersion: "3.1.3" restartPolicy: type: Never driver: cores: 1 coreLimit: "1000m" memory: "512m" serviceAccount: spark executor: cores: 1 instances: 1 memory: "512m"
Verifica che l'esempio di specifica
SparkApplication
venga eseguito e completato in 1-2 minuti utilizzando il seguente comando:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication spark-pi -n foo
Visualizza i log del conducente per vedere il risultato:
kubectl --kubeconfig AO_USER_KUBECONFIG logs spark-pi-driver -n foo | grep "Pi is roughly"
L'output è simile al seguente:
Pi is roughly 3.1407357036785184
Per maggiori informazioni, consulta le seguenti risorse:
- Per il codice dell'applicazione, consulta l'articolo
Stima di Pi della documentazione di Apache Spark:
https://spark.apache.org/examples.html
. - Per un file YAML di esempio di Spark Pi, consulta Scrivere una specifica dell'applicazione Spark.
Spark SQL
Segui questi passaggi per eseguire Spark SQL:
Per eseguire un'applicazione Spark SQL che seleziona il valore
1
, utilizza la seguente query:select 1;
Applica il seguente esempio di specifica
SparkApplication
nel cluster utente:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: pyspark-sql-arrow namespace: foo spec: type: Python mode: cluster image: "${DATAPROC_IMAGE?}" imagePullPolicy: IfNotPresent mainApplicationFile: "local:///usr/lib/spark/examples/src/main/python/sql/arrow.py" sparkVersion: "3.1.3" restartPolicy: type: Never driver: cores: 1 coreLimit: "1000m" memory: "512m" serviceAccount: spark executor: cores: 1 instances: 1 memory: "512m"
Verifica che l'esempio di specifica
SparkApplication
venga eseguito e completato in meno di un minuto utilizzando il seguente comando:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication pyspark-sql-arrow -n foo
Spark MLlib
Segui questi passaggi per eseguire Spark MLlib:
Utilizza il seguente esempio Scala per eseguire un'istanza Spark MLlib che esegue l'analisi statistica e stampa un risultato nella console:
import org.apache.spark.ml.linalg.{Matrix, Vectors} import org.apache.spark.ml.stat.Correlation import org.apache.spark.sql.Row val data = Seq( Vectors.sparse(4, Seq((0, 1.0), (3, -2.0))), Vectors.dense(4.0, 5.0, 0.0, 3.0), Vectors.dense(6.0, 7.0, 0.0, 8.0), Vectors.sparse(4, Seq((0, 9.0), (3, 1.0))) ) val df = data.map(Tuple1.apply).toDF("features") val Row(coeff1: Matrix) = Correlation.corr(df, "features").head println(s"Pearson correlation matrix:\n $coeff1") val Row(coeff2: Matrix) = Correlation.corr(df, "features", "spearman").head println(s"Spearman correlation matrix:\n $coeff2")
Applica il seguente esempio di specifica
SparkApplication
nel cluster utente:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-ml namespace: foo spec: type: Scala mode: cluster image: "${DATAPROC_IMAGE?}" imagePullPolicy: IfNotPresent mainClass: org.apache.spark.examples.ml.SummarizerExample mainApplicationFile: "local:///usr/lib/spark/examples/jars/spark-examples_2.12-3.1.3.jar" sparkVersion: "3.1.3" restartPolicy: type: Never driver: cores: 1 coreLimit: "1000m" memory: "512m" serviceAccount: spark executor: cores: 1 instances: 1 memory: "512m"
Verifica che l'esempio di specifica
SparkApplication
venga eseguito e completato in meno di un minuto utilizzando il seguente comando:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication spark-ml -n foo
SparkR
Segui questi passaggi per eseguire SparkR:
Utilizza il seguente codice di esempio per eseguire un'istanza SparkR che carica un set di dati in bundle e stampa la prima riga:
library(SparkR) sparkR.session() df <- as.DataFrame(faithful) head(df)
Applica il seguente esempio di specifica
SparkApplication
nel cluster utente:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-r-dataframe namespace: foo spec: type: R mode: cluster image: "${DATAPROC_IMAGE?}" imagePullPolicy: Always mainApplicationFile: "local:///usr/lib/spark/examples/src/main/r/dataframe.R" sparkVersion: "3.1.3" restartPolicy: type: Never driver: cores: 1 coreLimit: "1000m" memory: "512m" serviceAccount: spark executor: cores: 1 instances: 1 memory: "512m"
Verifica che l'esempio di specifica
SparkApplication
venga eseguito e completato in meno di un minuto utilizzando il seguente comando:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication spark-r-dataframe -n foo
Visualizzare i log di un'applicazione Spark 3
Spark dispone dei seguenti due tipi di log che puoi visualizzare:
Utilizza il terminale per eseguire i comandi.
Log del conducente
Segui questi passaggi per visualizzare i log dei driver della tua applicazione Spark:
Trova il pod del driver di Spark:
kubectl -n spark get pods
Apri i log dal pod del driver Spark:
kubectl -n spark logs DRIVER_POD
Sostituisci
DRIVER_POD
con il nome del pod driver Spark che hai trovato nel passaggio precedente.
Log eventi
Puoi trovare i log eventi nel percorso specificato nel file YAML della specifica
SparkApplication
.
Segui questi passaggi per visualizzare i log eventi della tua applicazione Spark:
- Apri il file YAML della specifica
SparkApplication
. - Individua il campo
spec
nel file. - Individua il campo
sparkConf
nidificato nel campospec
. - Individua il valore del campo
spark.eventLog.dir
nidificato nella sezionesparkConf
. - Apri il percorso per visualizzare i log eventi.
Per un file YAML di esempio della specifica SparkApplication
, consulta
Scrivere una specifica dell'applicazione Spark.
Per saperne di più, contatta il tuo account manager.