Menjalankan workload batch Apache Spark

Pelajari cara menggunakan Dataproc Serverless untuk mengirimkan workload batch di infrastruktur komputasi yang dikelola Dataproc yang menskalakan resource sesuai kebutuhan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API Dataproc.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Aktifkan API Dataproc.

    Mengaktifkan API

Mengirimkan workload batch Spark

Konsol

  1. Di konsol Google Cloud, buka Batch Dataproc. Klik Create untuk membuka halaman Create batch.

  2. Pilih dan isi kolom berikut di halaman tersebut untuk mengirimkan workload batch Spark yang menghitung perkiraan nilai pi:

    • Info Batch:
      • ID Batch: Tentukan ID untuk beban kerja batch Anda. Nilai ini harus terdiri dari 4-63 karakter dengan huruf kecil. Karakter yang valid adalah /[a-z][0-9]-/.
      • Region: Pilih region tempat beban kerja Anda akan dijalankan.
    • Penampung:
      • Jenis batch: Spark.
      • Versi runtime: Versi runtime default dipilih. Secara opsional, Anda dapat menentukan versi runtime Dataproc Serverless non-default.
      • Class utama:
        org.apache.spark.examples.SparkPi
      • File jar (file ini sudah diinstal sebelumnya di lingkungan eksekusi Dataproc Serverless Spark).
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Argumen: 1000.
    • Konfigurasi Eksekusi: Anda dapat menentukan akun layanan yang akan digunakan untuk menjalankan beban kerja Anda. Jika Anda tidak menentukan akun layanan, beban kerja akan dijalankan pada akun layanan default Compute Engine.
    • Konfigurasi jaringan: Subnetwork VPC yang menjalankan Dataproc Serverless untuk workload Spark harus diaktifkan untuk Akses Google Pribadi dan memenuhi persyaratan lain yang tercantum di Dataproc Serverless untuk konfigurasi jaringan Spark. Daftar subnetwork menampilkan subnet di jaringan yang dipilih yang diaktifkan untuk Akses Google Pribadi.
    • Properties: Masukkan Key (nama properti) dan Value properti Spark yang didukung untuk ditetapkan pada workload batch Spark Anda. Catatan: Tidak seperti Dataproc di properti cluster Compute Engine, Dataproc Serverless untuk properti workload Spark tidak menyertakan awalan spark:.
    • Opsi lainnya:
  3. Klik SUBMIT untuk menjalankan workload batch Spark.

gcloud

Untuk mengirimkan workload batch Spark guna menghitung perkiraan nilai pi, jalankan perintah gcloud dataproc batches submit spark gcloud CLI berikut secara lokal di jendela terminal atau di Cloud Shell.

gcloud dataproc batches submit spark \
    --region=REGION \
    --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
    --class=org.apache.spark.examples.SparkPi \
    -- 1000

Catatan:

  • REGION: Tentukan region tempat workload Anda akan dijalankan.
  • Subnetwork: Subnetwork VPC yang menjalankan Dataproc Serverless untuk workload Spark harus diaktifkan untuk Akses Google Pribadi dan memenuhi persyaratan lain yang tercantum dalam Dataproc Serverless for Spark network configuration. Jika subnet jaringan default untuk region yang ditentukan dalam perintah gcloud dataproc batches submit tidak diaktifkan untuk Akses Google Pribadi, Anda harus melakukan salah satu tindakan berikut:
    • Aktifkan subnet jaringan default untuk region untuk Akses Google Pribadi, atau
    • Gunakan flag --subnet=[SUBNET_URI] dalam perintah untuk menentukan subnet yang mengaktifkan Akses Google Pribadi. Anda dapat menjalankan perintah gcloud compute networks describe [NETWORK_NAME] untuk membuat daftar URI subnet dalam jaringan.
  • --jars: Contoh file JAR telah diinstal sebelumnya di lingkungan eksekusi Spark, Argumen perintah 1000 yang diteruskan ke workload SparkPi menentukan 1.000 iterasi logika estimasi pi (argumen input workload disertakan setelah "-- ").
  • --properties: Anda dapat menambahkan flag --properties untuk memasukkan properti Spark yang didukung yang Anda inginkan untuk digunakan oleh workload batch Spark.
  • --deps-bucket: Anda dapat menambahkan flag ini untuk menentukan bucket Cloud Storage tempat Dataproc Serverless akan mengupload dependensi beban kerja. Awalan URI gs:// untuk bucket tidak diperlukan. Anda dapat menentukan jalur bucket atau nama bucket, misalnya, "mybucketname". Dataproc Serverless untuk Spark mengupload file lokal ke folder /dependencies di bucket sebelum menjalankan workload batch. Catatan: Flag ini wajib jika beban kerja batch Anda mereferensikan file di mesin lokal Anda.
  • --ttl: Anda dapat menambahkan flag --ttl untuk menentukan durasi masa aktif batch. Jika melebihi durasi ini, beban kerja akan dihentikan tanpa syarat tanpa menunggu selesainya pekerjaan yang sedang berlangsung. Tentukan durasi menggunakan akhiran s, m, h, atau d (detik, menit, jam, atau hari). Nilai minimum adalah 10 menit (10m), dan nilai maksimum adalah 14 hari (14d).
    • Batch runtime 1.1 atau 2.0: Jika --ttl tidak ditentukan untuk workload batch runtime 1.1 atau 2.0, workload akan diizinkan berjalan hingga keluar secara alami (atau berjalan selamanya jika tidak keluar).
    • Batch runtime 2.1+: Jika --ttl tidak ditentukan untuk beban kerja batch runtime 2.1 atau yang lebih baru, defaultnya adalah 4h.
  • Opsi lainnya: Anda dapat menambahkan flag perintah gcloud dataproc batches submit untuk menentukan opsi workload dan properti Spark lainnya.
    • Hive Metastore: Perintah berikut mengonfigurasi workload batch untuk menggunakan Hive Metastore eksternal yang dikelola sendiri menggunakan konfigurasi Spark standar.
      gcloud dataproc batches submit \
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
              
    • Server Histori Persisten:
      1. Perintah berikut membuat PHS pada cluster Dataproc satu node. PHS harus berada di region tempat Anda menjalankan workload batch, dan bucket-name Cloud Storage harus ada.
        gcloud dataproc clusters create PHS_CLUSTER_NAME \
            --region=REGION \
            --single-node \
            --enable-component-gateway \
            --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
                     
      2. Kirimkan beban kerja batch, yang menentukan Server Histori Persisten yang sedang berjalan.
        gcloud dataproc batches submit spark \
            --region=REGION \
            --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
            --class=org.apache.spark.examples.SparkPi \
            --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \
            -- 1000
                      
    • Versi runtime: Gunakan flag --version untuk menentukan versi runtime Dataproc Serverless untuk workload.
      gcloud dataproc batches submit spark \
          --region=REGION \
          --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
          --class=org.apache.spark.examples.SparkPi \
          --version=VERSION
          -- 1000
                  

API

Bagian ini menunjukkan cara membuat beban kerja batch untuk menghitung perkiraan nilai pi menggunakan Dataproc Serverless untuk Spark batches.create`

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: ID Project Google Cloud.
  • region: Region Compute Engine tempat Dataproc Serverless akan menjalankan beban kerja.
  • Catatan:
    • Custom-container-image: Tentukan image container kustom menggunakan format penamaan image Docker: {hostname}/{project-id}/{image}:{tag}, misalnya, "gcr.io/my-project-id/my-image:1.0.1". Catatan: Anda harus menghosting container kustom di Container Registry.
    • Subnetwork: Subnetwork VPC yang menjalankan Dataproc Serverless untuk workload Spark harus diaktifkan untuk Akses Google Pribadi dan memenuhi persyaratan lain yang tercantum di bagian Dataproc Serverless for Spark network configuration. Jika subnet jaringan default untuk region yang ditentukan tidak diaktifkan untuk Akses Google Pribadi, Anda harus melakukan salah satu tindakan berikut:
      1. Aktifkan subnet jaringan default untuk region untuk Akses Google Pribadi, atau
      2. Gunakan kolom ExecutionConfig.subnetworkUri untuk menentukan subnet yang mengaktifkan Akses Google Pribadi. Anda dapat menjalankan perintah gcloud compute networks describe [NETWORK_NAME] untuk membuat daftar URI subnet dalam jaringan.
    • sparkBatch.jarFileUris: Contoh file jar sudah diinstal sebelumnya di lingkungan eksekusi Spark. sparkBatch.args "1000" diteruskan ke workload SparkPi, dan menentukan 1.000 iterasi dari logika estimasi pi.
    • Spark properties: Anda dapat menggunakan kolom RuntimeConfig.properties untuk memasukkan properti Spark yang didukung yang ingin digunakan oleh workload batch Spark.
    • --ttl: Anda dapat menggunakan kolom EnvironmentConfig.ttl untuk menentukan durasi masa aktif batch. Jika melebihi durasi ini, beban kerja akan dihentikan tanpa syarat tanpa menunggu selesainya pekerjaan yang sedang berlangsung. Tentukan durasi sebagai representasi JSON untuk Duration. Nilai minimumnya adalah 10 menit, dan nilai maksimumnya adalah 14 hari.
      • Batch runtime 1.1 atau 2.0: Jika --ttl tidak ditentukan untuk workload batch runtime 1.1 atau 2.0, workload akan diizinkan berjalan hingga keluar secara alami (atau berjalan selamanya jika tidak keluar).
      • Batch runtime 2.1+: Jika --ttl tidak ditentukan untuk beban kerja batch runtime 2.1 atau yang lebih baru, durasi defaultnya adalah 4 jam.
    • Opsi lainnya:

    Metode HTTP dan URL:

    POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches

    Meminta isi JSON:

    {
      "sparkBatch":{
        "args":[
          "1000"
        ],
        "jarFileUris":[
          "file:///usr/lib/spark/examples/jars/spark-examples.jar"
        ],
        "mainClass":"org.apache.spark.examples.SparkPi"
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
    "name":"projects/project-id/locations/region/batches/batch-id",
      "uuid":",uuid",
      "createTime":"2021-07-22T17:03:46.393957Z",
      "sparkBatch":{
        "mainClass":"org.apache.spark.examples.SparkPi",
        "args":[
          "1000"
        ],
        "jarFileUris":[
          "file:///usr/lib/spark/examples/jars/spark-examples.jar"
        ]
      },
      "runtimeInfo":{
        "outputUri":"gs://dataproc-.../driveroutput"
      },
      "state":"SUCCEEDED",
      "stateTime":"2021-07-22T17:06:30.301789Z",
      "creator":"account-email-address",
      "runtimeConfig":{
        "properties":{
          "spark:spark.executor.instances":"2",
          "spark:spark.driver.cores":"2",
          "spark:spark.executor.cores":"2",
          "spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id"
        }
      },
      "environmentConfig":{
        "peripheralsConfig":{
          "sparkHistoryServerConfig":{
          }
        }
      },
      "operation":"projects/project-id/regions/region/operation-id"
    }
    

Memperkirakan biaya workload

Dataproc Serverless untuk workload Spark menggunakan Data Compute Unit (DCU) dan mengacak resource penyimpanan. Untuk contoh yang menghasilkan output Dataproc UsageMetrics untuk memperkirakan biaya dan konsumsi resource workload, lihat Harga Dataproc Serverless .

Langkah selanjutnya

Pelajari: