Menjalankan layanan Dataproc Container for Spark

GDC 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 GDC dengan perubahan minimal. Jika Anda sudah terbiasa dengan alat Spark, Anda dapat terus menggunakannya.

Tentukan aplikasi Spark Anda dalam file YAML, dan GDC 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 GDC untuk menggunakan hardware khusus, seperti node hardware khusus atau GPU.

Prasyarat untuk menjalankan aplikasi Spark

Sebelum menjalankan aplikasi Spark, minta Administrator Platform (PA) Anda untuk memberi Anda akses ke peran Spark Operator (mkt-spark-operator) di namespace mkt-system.

Menjalankan aplikasi Spark 3 contoh

Membuat aplikasi Spark dalam container menyederhanakan menjalankan aplikasi big data di lokasi Anda menggunakan GDC. 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 GDC, selesaikan langkah-langkah berikut:

  1. 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 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/')
    

    Contoh:

    export DATAPROC_IMAGE=10.200.8.2:10443/dataproc-service/private-cloud-devel/dataproc:3.1-dataproc-17
    
  2. Tulis spesifikasi SparkApplication dan simpan dalam file YAML. Untuk mengetahui informasi selengkapnya, lihat bagian Menulis spesifikasi aplikasi Spark.

  3. Kirimkan, jalankan, dan pantau aplikasi Spark Anda seperti yang dikonfigurasi dalam spesifikasi SparkApplication di cluster GKE dengan perintah kubectl. Untuk mengetahui informasi selengkapnya, lihat bagian Contoh aplikasi.

  4. Tinjau status permohonan.

  5. Opsional: Tinjau log aplikasi. Untuk mengetahui informasi selengkapnya, lihat bagian Melihat log aplikasi Spark 3.

  6. 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:

  1. Terapkan contoh spesifikasi SparkApplication berikut di cluster infrastruktur org:

    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"
    
  2. Pastikan contoh spesifikasi SparkApplication berjalan dan selesai dalam 1-2 menit menggunakan perintah berikut:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG get SparkApplication spark-pi -n mkt-system
    
  3. Lihat Log Driver untuk melihat hasilnya:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG logs spark-pi-driver -n mkt-system | 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:

  1. Untuk menjalankan aplikasi Spark SQL yang memilih nilai 1, gunakan kueri berikut:

    select 1;
    
  2. Terapkan contoh spesifikasi SparkApplication berikut di cluster infrastruktur org:

    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"
    
  3. Verifikasi bahwa contoh spesifikasi SparkApplication berjalan dan selesai dalam waktu kurang dari satu menit menggunakan perintah berikut:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG get SparkApplication pyspark-sql-arrow -n mkt-system
    

Spark MLlib

Ikuti langkah-langkah berikut untuk menjalankan Spark MLlib:

  1. 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")
    
  2. Terapkan contoh spesifikasi SparkApplication berikut di cluster infrastruktur org:

    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"
    
  3. Verifikasi bahwa contoh spesifikasi SparkApplication berjalan dan selesai dalam waktu kurang dari satu menit menggunakan perintah berikut:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG get SparkApplication spark-ml -n mkt-system
    

SparkR

Lakukan langkah-langkah berikut untuk menjalankan SparkR:

  1. 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)
    
  2. Terapkan contoh spesifikasi SparkApplication berikut di cluster infrastruktur org:

    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"
    
  3. Verifikasi bahwa contoh spesifikasi SparkApplication berjalan dan selesai dalam waktu kurang dari satu menit menggunakan perintah berikut:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG get SparkApplication spark-r-dataframe -n mkt-system
    

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:

  1. Menemukan pod driver Spark:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG get pods -n mkt-system
    
  2. Buka log dari pod driver Spark:

    kubectl --kubeconfig INFRA_CLUSTER_KUBECONFIG logs DRIVER_POD -n mkt-system
    

    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:

  1. Buka file YAML spesifikasi SparkApplication.
  2. Cari kolom spec dalam file.
  3. Temukan kolom sparkConf yang berada di dalam kolom spec.
  4. Temukan nilai kolom spark.eventLog.dir yang ada di bagian sparkConf.
  5. 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.