GDC 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 Kubernetes GDC con modifiche minime. Se hai familiarità con gli strumenti Spark, puoi continuare a utilizzarli.
Definisci l'applicazione Spark in un file YAML e GDC 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 di Dataproc Container for Spark su GDC per utilizzare hardware specializzato, come nodi hardware specializzati o GPU.
Prerequisiti per l'esecuzione delle applicazioni Spark
Prima di eseguire un'applicazione Spark, chiedi all'amministratore della piattaforma di concederti l'accesso al ruolo Operatore Spark (mkt-spark-operator
) nello spazio dei nomi mkt-system
.
Esegui applicazioni Spark 3 di esempio
La containerizzazione delle applicazioni Spark semplifica l'esecuzione di applicazioni di big data on-premise utilizzando GDC. 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 GDC, 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 INFRA_CLUSTER_KUBECONFIG \ --selector app.kubernetes.io/name=spark-operator -n mkt-system \ -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 ulteriori informazioni, 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 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 dell'infrastruttura dell'organizzazione:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi namespace: mkt-system 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: dataproc-addon-spark executor: cores: 1 instances: 1 memory: "512m"
Verifica che l'esempio di specifica
SparkApplication
venga eseguito e completato in 1-2 minuti utilizzando questo comando:kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG get SparkApplication spark-pi -n mkt-system
Visualizza i log del conducente per vedere il risultato:
kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG logs spark-pi-driver -n mkt-system | 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 dell'infrastruttura dell'organizzazione:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: pyspark-sql-arrow namespace: mkt-system 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: dataproc-addon-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 INFRA_CLUSTER_KUBECONFIG get SparkApplication pyspark-sql-arrow -n mkt-system
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 dell'infrastruttura dell'organizzazione:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-ml namespace: mkt-system 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: dataproc-addon-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 INFRA_CLUSTER_KUBECONFIG get SparkApplication spark-ml -n mkt-system
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 dell'infrastruttura dell'organizzazione:apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-r-dataframe namespace: mkt-system 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: dataproc-addon-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 INFRA_CLUSTER_KUBECONFIG get SparkApplication spark-r-dataframe -n mkt-system
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 --kubeconfig INFRA_CLUSTER_KUBECONFIG get pods -n mkt-system
Apri i log dal pod del driver Spark:
kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG logs DRIVER_POD -n mkt-system
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.