Google Distributed Cloud (GDC) dengan air gap menyediakan Dataproc Container untuk Spark. Ini adalah
lingkungan Apache Spark untuk pemrosesan data. Untuk mengetahui informasi selengkapnya tentang Apache
Spark, lihat https://spark.apache.org/
. Gunakan container Dataproc Container for Spark untuk
menjalankan aplikasi Spark baru atau yang sudah ada dalam cluster Kubernetes Distributed Cloud dengan perubahan minimal. Jika Anda sudah terbiasa dengan alat Spark, Anda dapat terus menggunakannya.
Tentukan aplikasi Spark Anda dalam file YAML, dan Distributed Cloud akan mengalokasikan resource untuk Anda. Container Dataproc Container for Spark dimulai dalam hitungan detik. Eksekutor Spark akan di-scale up atau dimatikan sesuai kebutuhan Anda.
Konfigurasi container dari Dataproc Container for Spark di Distributed Cloud untuk menggunakan hardware khusus, seperti node hardware khusus atau GPU.
Men-deploy layanan Dataproc Container for Spark
Administrator Platform (PA) harus menginstal layanan Marketplace untuk Anda sebelum Anda dapat menggunakan layanan tersebut. Hubungi PA Anda jika Anda memerlukan Dataproc Container for Spark. Lihat Menginstal paket software GDC Marketplace untuk mengetahui informasi selengkapnya.
Prasyarat untuk menjalankan aplikasi Spark
Anda harus memiliki akun layanan di cluster pengguna untuk menggunakan layanan Dataproc Container for Spark. Dataproc Container for Spark membuat pod driver Spark untuk menjalankan aplikasi Spark. Pod driver Spark memerlukan akun layanan Kubernetes di namespace pod dengan izin untuk melakukan tindakan berikut:
- Membuat, mendapatkan, mencantumkan, dan menghapus pod eksekutor.
- Buat layanan headless Kubernetes untuk driver.
Sebelum menjalankan aplikasi Spark, selesaikan langkah-langkah berikut untuk memastikan Anda memiliki akun layanan dengan izin sebelumnya di namespace foo
:
Buat akun layanan untuk pod driver Spark yang akan digunakan di namespace
foo
:kubectl create serviceaccount spark --kubeconfig AO_USER_KUBECONFIG --namespace=foo
Buat peran untuk memberikan izin guna membuat, mendapatkan, mencantumkan, dan menghapus pod eksekutor, serta buat layanan headless Kubernetes untuk driver di namespace
foo
:kubectl create role spark-driver --kubeconfig AO_USER_KUBECONFIG --verb=* \ --resource=pods,services,configmaps,persistentvolumeclaims \ --namespace=foo
Buat binding peran untuk memberikan akses peran akun layanan di namespace
foo
:kubectl create --kubeconfig AO_USER_KUBECONFIG \ rolebinding spark-spark-driver \ --role=spark-driver --serviceaccount=foo:spark \ --namespace=foo
Menjalankan aplikasi Spark 3 contoh
Membuat aplikasi Spark dalam container menyederhanakan jalannya aplikasi big data di infrastruktur Anda menggunakan Distributed Cloud. Sebagai Operator Aplikasi
(AO), jalankan aplikasi Spark yang ditentukan dalam objek GKE dari
jenis resource kustom SparkApplication
.
Untuk menjalankan dan menggunakan aplikasi Apache Spark 3 di Distributed Cloud, selesaikan langkah-langkah berikut:
Periksa image
spark-operator
di project Anda untuk menemukan$DATAPROC_IMAGE
yang akan dirujuk di aplikasi Spark Anda: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/')
Contoh:
export DATAPROC_IMAGE=10.200.8.2:10443/dataproc-service/private-cloud-devel/dataproc:3.1-dataproc-17
Tulis spesifikasi
SparkApplication
dan simpan dalam file YAML. Untuk mengetahui informasi selengkapnya, lihat bagian Menulis spesifikasi aplikasi Spark.Kirimkan, jalankan, dan pantau aplikasi Spark Anda seperti yang dikonfigurasi dalam spesifikasi
SparkApplication
di cluster GKE dengan perintahkubectl
. Untuk mengetahui informasi selengkapnya, lihat bagian Contoh aplikasi.Tinjau status permohonan.
Opsional: Tinjau log aplikasi. Untuk mengetahui informasi selengkapnya, lihat bagian Melihat log aplikasi Spark 3.
Gunakan aplikasi Spark untuk mengumpulkan dan menampilkan status driver dan eksekutor kepada pengguna.
Menulis spesifikasi aplikasi Spark
Spesifikasi SparkApplication
mencakup komponen berikut:
- Kolom
apiVersion
. - Kolom
kind
. - Kolom
metadata
. - Bagian
spec
.
Untuk mengetahui informasi selengkapnya, lihat Menulis Spesifikasi SparkApplication di GitHub: https://github.com/kubeflow/spark-operator/blob/gh-pages/docs/user-guide.md#writing-a-sparkapplication-spec
Contoh aplikasi
Bagian ini menyertakan contoh berikut dengan spesifikasi
SparkApplication
yang sesuai untuk menjalankan aplikasi Spark:
Spark Pi
Bagian ini berisi contoh untuk menjalankan aplikasi Spark Pi yang membutuhkan komputasi intensif yang memperkirakan 𝛑 (pi) dengan melempar anak panah ke dalam lingkaran.
Ikuti langkah-langkah berikut untuk menjalankan Spark Pi:
Terapkan contoh spesifikasi
SparkApplication
berikut di cluster pengguna: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"
Pastikan contoh spesifikasi
SparkApplication
berjalan dan selesai dalam 1-2 menit menggunakan perintah berikut:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication spark-pi -n foo
Lihat Log Driver untuk melihat hasilnya:
kubectl --kubeconfig AO_USER_KUBECONFIG logs spark-pi-driver -n foo | grep "Pi is roughly"
Outputnya mirip dengan berikut ini:
Pi is roughly 3.1407357036785184
Untuk informasi selengkapnya, lihat referensi berikut:
- Untuk kode aplikasi, lihat artikel
Estimasi Pi dari dokumentasi Apache Spark:
https://spark.apache.org/examples.html
. - Untuk contoh file YAML Spark Pi, lihat Menulis spesifikasi aplikasi Spark.
Spark SQL
Lakukan langkah-langkah berikut untuk menjalankan Spark SQL:
Untuk menjalankan aplikasi Spark SQL yang memilih nilai
1
, gunakan kueri berikut:select 1;
Terapkan contoh spesifikasi
SparkApplication
berikut di cluster pengguna: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"
Verifikasi bahwa contoh spesifikasi
SparkApplication
berjalan dan selesai dalam waktu kurang dari satu menit menggunakan perintah berikut:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication pyspark-sql-arrow -n foo
Spark MLlib
Ikuti langkah-langkah berikut untuk menjalankan Spark MLlib:
Gunakan contoh Scala berikut untuk menjalankan instance Spark MLlib yang melakukan analisis statistik dan mencetak hasil ke konsol:
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")
Terapkan contoh spesifikasi
SparkApplication
berikut di cluster pengguna: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"
Verifikasi bahwa contoh spesifikasi
SparkApplication
berjalan dan selesai dalam waktu kurang dari satu menit menggunakan perintah berikut:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication spark-ml -n foo
SparkR
Lakukan langkah-langkah berikut untuk menjalankan SparkR:
Gunakan contoh kode berikut untuk menjalankan instance SparkR yang memuat set data yang dibundel dan mencetak baris pertama:
library(SparkR) sparkR.session() df <- as.DataFrame(faithful) head(df)
Terapkan contoh spesifikasi
SparkApplication
berikut di cluster pengguna: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"
Verifikasi bahwa contoh spesifikasi
SparkApplication
berjalan dan selesai dalam waktu kurang dari satu menit menggunakan perintah berikut:kubectl --kubeconfig AO_USER_KUBECONFIG get SparkApplication spark-r-dataframe -n foo
Melihat log aplikasi Spark 3
Spark memiliki dua jenis log berikut yang dapat Anda visualisasikan:
Gunakan terminal untuk menjalankan perintah.
Log pengemudi
Lakukan langkah-langkah berikut untuk melihat log driver aplikasi Spark Anda:
Menemukan pod driver Spark:
kubectl -n spark get pods
Buka log dari pod driver Spark:
kubectl -n spark logs DRIVER_POD
Ganti
DRIVER_POD
dengan nama pod driver Spark yang Anda temukan di langkah sebelumnya.
Log aktivitas
Anda dapat menemukan log peristiwa di jalur yang ditentukan dalam file YAML spesifikasi
SparkApplication
.
Ikuti langkah-langkah berikut untuk melihat log peristiwa aplikasi Spark Anda:
- Buka file YAML spesifikasi
SparkApplication
. - Cari kolom
spec
dalam file. - Temukan kolom
sparkConf
yang berada di dalam kolomspec
. - Temukan nilai kolom
spark.eventLog.dir
yang berada di bagiansparkConf
. - Buka jalur untuk melihat log peristiwa.
Untuk contoh file YAML spesifikasi SparkApplication
, lihat
Menulis spesifikasi aplikasi Spark.
Hubungi Account Manager Anda untuk mendapatkan informasi selengkapnya.