Properti Spark

Managed Service untuk Apache Spark menggunakan properti Spark untuk menentukan resource komputasi, memori, dan disk yang akan dialokasikan ke workload batch Anda. Setelan properti ini memengaruhi konsumsi dan biaya kuota workload. Untuk mengetahui informasi selengkapnya, lihat kuota Managed Service untuk Apache Spark dan harga Managed Service untuk Apache Spark.

Untuk mengonfigurasi properti yang mengontrol pengumpulan metrik, lihat Metrik Spark.

Menetapkan properti workload batch Spark

Anda dapat menentukan properti Spark saat mengirim workload batch Managed Service untuk Apache Spark menggunakan konsol Google Cloud , gcloud CLI, atau Dataproc API.

Konsol

  1. Di konsol Google Cloud , buka halaman Jobs Managed Service untuk Apache Spark, dan klik Submit job untuk membuka halaman Submit a job.

    Buka Managed Service for Apache Spark Jobs

  2. Di bagian Select compute type for job, pastikan Serverless Spark dipilih.

  3. Di bagian Job execution and properties, di bagian Spark properties, klik Add property (atau di bagian Serverless job details, klik Configure pada kartu Summary Runtime profile, luaskan Additional configuration, klik Edit di samping Other customizations, dan klik Add property di bagian Spark properties).

  4. Masukkan Kunci (nama) dan Nilai dari properti Spark yang didukung.

gcloud

Berikut adalah contoh pengiriman batch gcloud CLI. Beberapa properti dipisahkan dengan koma.

gcloud dataproc batches submit spark \
    --properties=spark.checkpoint.compress=true,spark.driver.cores=8  \
    --region=REGION \
    other args ...

API

Tetapkan RuntimeConfig.properties dengan properti Spark yang didukung sebagai bagian dari permintaan batches.create.

Properti Spark yang didukung

Managed Service untuk Apache Spark mendukung sebagian besar properti Spark, tetapi tidak mendukung properti Spark terkait YARN dan shuffle, seperti spark.master=yarn dan spark.shuffle.service.enabled. Jika kode aplikasi Spark menetapkan properti YARN atau shuffle, aplikasi akan gagal.

Properti lingkungan runtime

Managed Service untuk Apache Spark mendukung properti Spark kustom berikut untuk mengonfigurasi lingkungan runtime:

Properti Deskripsi
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME Tambahkan ENVIRONMENT_VARIABLE_NAME ke proses driver. Anda dapat menentukan beberapa variabel lingkungan.
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME Tambahkan ENVIRONMENT_VARIABLE_NAME ke proses eksekutor. Anda dapat menentukan beberapa variabel lingkungan.

Properti tingkat

Properti Deskripsi Default
dataproc.tier Tingkat tempat workload batch dijalankan, baik standard maupun premium (lihat Tingkat Managed Service untuk Apache Spark). Sesi interaktif selalu berjalan di dataproc.tier premium.
  • Menetapkan properti paket batch ini ke standard akan menetapkan properti runtime dan paket resource Managed Service untuk Apache Spark ke paket standard (lihat properti alokasi resource).
  • Menetapkan properti tingkat batch ini ke premium akan menetapkan spark.dataproc.engine ke lightningEngine. Dalam runtime sebelum 4.0, menetapkan paket premium juga akan menetapkan spark.dataproc.driver.compute.tier dan spark.dataproc.executor.compute.tier ke premium. Anda dapat mengganti sebagian besar setelan tingkat batch yang ditetapkan secara otomatis, tetapi setelan tingkat komputasi yang ditetapkan secara otomatis tidak dapat diganti untuk batch yang menggunakan runtime sebelum 3.0 (lihat properti alokasi resource).
  • Di runtime 4.0 dan yang lebih baru, workload batch berjalan di paket premium, kecuali jika Anda menetapkan properti ini ke standard. Properti ini menentukan resource komputasi dan disk driver dan eksekutor, serta menggantikan properti alokasi resource tingkat komputasi dan disk, yang tidak didukung. Untuk mengetahui informasi selengkapnya, lihat Fitur dan peningkatan Runtime 4.0.
  • Runtime 4.0 dan yang lebih baru: premium
  • Runtime sebelumnya: standard

Properti mesin dan runtime

Properti Deskripsi Default
spark.dataproc.engine Mesin yang akan digunakan untuk menjalankan workload batch atau sesi interaktif: lightningEngine (lihat Lightning Engine) atau mesin default.
  • Workload batch: Jika Anda memilih properti dataproc.tier standar untuk workload, properti ini akan otomatis ditetapkan ke default dan tidak dapat diganti. Jika Anda memilih premium dataproc.tier untuk workload, properti ini akan otomatis ditetapkan ke lightningEngine, tetapi Anda dapat mengubah setelan ke default jika diperlukan.
  • Sesi interaktif: Setelan ini otomatis ditetapkan ke default, tetapi Anda dapat mengubah setelan ini ke lightningEngine. Perhatikan bahwa sesi interaktif selalu berjalan di paket premium. Saat Anda membuat profil runtime (template sesi) di halaman Create a runtime profile di konsol Google Cloud , paket Premium dan Enable Lightning Engine to accelerate performance (yang menetapkan spark.dataproc.engine=lightningEngine) dipilih secara default.
  • Batch (paket standar): default
  • Batch (paket premium): lightningEngine
  • Sesi: default
spark.dataproc.lightningEngine.runtime Runtime yang akan digunakan saat Lightning Engine dipilih untuk workload batch atau sesi interaktif: default atau native (Native Query Execution). default

Properti alokasi resource

Dalam runtime 4.0 dan yang lebih baru, driver dan eksekutor menggunakan bentuk memori highmem secara default, yang menentukan memorinya. Driver atau eksekutor tidak menggunakan bentuk memori jika Anda menetapkan memori atau overhead memorinya, atau jika menggunakan akselerator GPU. Untuk mengetahui informasi selengkapnya, lihat Cara bentuk memori diterapkan.

Managed Service untuk Apache Spark mendukung properti Spark berikut untuk mengonfigurasi alokasi resource:

Properti Deskripsi Default Contoh
spark.driver.cores Jumlah core (vCPU) yang akan dialokasikan ke driver Spark. Nilai yang valid: 4, 8, 16. 4
spark.driver.memory

Jumlah memori yang akan dialokasikan ke proses driver Spark, yang ditentukan dalam format string memori JVM dengan akhiran unit ukuran ("m", "g", atau "t").

Total memori driver per core driver, termasuk overhead memori driver, yang harus antara 1024m dan 7424m untuk tingkat komputasi Standard (24576m untuk tingkat komputasi Premium). Misalnya, jika spark.driver.cores = 4, maka 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

512m, 2g
spark.driver.memoryOverhead

Jumlah memori JVM tambahan yang akan dialokasikan ke proses driver Spark, yang ditentukan dalam format string memori JVM dengan akhiran unit ukuran ("m", "g", atau "t").

Ini adalah memori non-heap yang terkait dengan overhead JVM, string internal, dan overhead native lainnya, serta mencakup memori yang digunakan oleh proses driver lain, seperti proses driver PySpark dan memori yang digunakan oleh proses non-driver lain yang berjalan di container. Ukuran memori maksimum container tempat driver berjalan ditentukan oleh jumlah spark.driver.memoryOverhead ditambah spark.driver.memory.

Total memori driver per core driver, termasuk overhead memori driver, harus antara 1024m dan 7424m untuk tingkat komputasi Standard (24576m untuk tingkat komputasi Premium). Misalnya, jika spark.driver.cores = 4, maka 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

10% memori driver, kecuali untuk workload batch PySpark, yang secara default menggunakan 40% memori driver 512m, 2g
spark.driver.memoryOverheadFactor

Hanya didukung di runtime 4.0 dan yang lebih baru. Fraksi memori driver yang akan dialokasikan sebagai overhead memori driver jika spark.driver.memoryOverhead tidak ditetapkan. Harus lebih besar dari 0 dan kurang dari atau sama dengan 1.0.

Jika driver menggunakan bentuk memori, properti ini menentukan cara memori dari bentuk memori dibagi antara spark.driver.memory dan spark.driver.memoryOverhead. Menetapkan properti ini tidak akan mengubah bentuk memori driver.

0.1, kecuali untuk workload batch PySpark, yang secara default ditetapkan ke 0.4 0.2, 0.3
spark.dataproc.driver.memory.shape

Hanya didukung di runtime 4.0 dan yang lebih baru. Bentuk memori driver, baik highmem atau standard. Bentuk memori highmem menyediakan memori sebesar 7,75 GiB per vCPU, dan bentuk memori standard menyediakan memori sebesar 3,75 GiB per vCPU. Managed Service untuk Apache Spark membagi memori ini antara spark.driver.memory dan spark.driver.memoryOverhead.

Anda tidak dapat menetapkan properti ini bersama dengan spark.driver.memory atau spark.driver.memoryOverhead. Untuk mengubah cara pembagian memori bentuk memori, tetapkan spark.driver.memoryOverheadFactor.

highmem highmem, standard
spark.dataproc.driver.compute.tier Hanya didukung di runtime 3.0 dan yang lebih lama. Tingkat komputasi yang akan digunakan pada driver. Paket komputasi Premium menawarkan performa per core yang lebih tinggi, tetapi ditagih dengan tarif yang lebih tinggi. Di runtime 4.0 dan yang lebih baru, gunakan properti dataproc.tier. standar standar, premium
spark.dataproc.driver.disk.size Jumlah kapasitas disk yang dialokasikan untuk driver, yang ditentukan dengan akhiran unit ukuran ("k", "m", "g", atau "t"). Minimal harus 250GiB. Jika paket disk Premium dipilih pada driver, ukuran yang valid adalah 375g, 750g, 1500g, 3000g, 6000g, atau 9000g. Jika paket disk Premium dan 16 core driver dipilih, ukuran disk minimum adalah 750g.

Di runtime 4.0 dan yang lebih baru, paket workload menentukan ukuran disk default driver. Untuk mengetahui informasi selengkapnya, lihat Ukuran disk default.

  • Runtime 4.0 dan yang lebih baru: bergantung pada paket
  • Runtime sebelumnya: 100GiB per core
1024g, 2t
spark.dataproc.driver.disk.tier Hanya didukung di runtime 3.0 dan yang lebih lama. Tingkat disk yang akan digunakan untuk penyimpanan lokal dan shuffle pada driver. Paket disk Premium menawarkan performa yang lebih baik dalam IOPS dan throughput, tetapi ditagih dengan tarif yang lebih tinggi. Jika paket disk Premium dipilih pada driver, paket komputasi Premium juga harus dipilih menggunakan spark.dataproc.driver.compute.tier=premium, dan jumlah kapasitas disk harus ditentukan menggunakan spark.dataproc.driver.disk.size.

Jika tingkat disk Premium dipilih, driver akan mengalokasikan kapasitas disk tambahan sebesar 50 GiB untuk penyimpanan sistem, yang tidak dapat digunakan oleh aplikasi pengguna.

Di runtime 4.0 dan yang lebih baru, gunakan properti dataproc.tier.

standar standar, premium
spark.executor.cores Jumlah core (vCPU) yang akan dialokasikan ke setiap eksekutor Spark. Nilai yang valid: 4, 8, 16. 4
spark.executor.memory

Jumlah memori yang akan dialokasikan ke setiap proses eksekutor Spark, yang ditentukan dalam format string memori JVM dengan akhiran unit ukuran ("m", "g", atau "t").

Total memori eksekutor per core eksekutor, termasuk overhead memori eksekutor, harus antara 1024m dan 7424m untuk paket komputasi Standard (24576m untuk paket komputasi Premium). Misalnya, jika spark.executor.cores = 4, maka 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

512m, 2g
spark.executor.memoryOverhead

Jumlah memori JVM tambahan yang akan dialokasikan ke proses eksekutor Spark, yang ditentukan dalam format string memori JVM dengan akhiran unit ukuran ("m", "g", atau "t").

Ini adalah memori non-heap yang digunakan untuk overhead JVM, string internal, dan overhead native lainnya, serta mencakup memori eksekutor PySpark dan memori yang digunakan oleh proses non-eksekutor lain yang berjalan di container. Ukuran memori maksimum container tempat eksekutor berjalan ditentukan oleh jumlah spark.executor.memoryOverhead ditambah spark.executor.memory.

Total memori eksekutor per core eksekutor, termasuk overhead memori eksekutor, harus antara 1024m dan 7424m untuk paket komputasi Standard (24576m untuk paket komputasi Premium). Misalnya, jika spark.executor.cores = 4, maka 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

10% memori eksekutor, kecuali untuk workload batch PySpark, yang secara default menggunakan 40% memori eksekutor 512m, 2g
spark.executor.memoryOverheadFactor

Hanya didukung di runtime 4.0 dan yang lebih baru. Pecahan memori eksekutor yang akan dialokasikan sebagai overhead memori eksekutor jika spark.executor.memoryOverhead tidak ditetapkan. Harus lebih besar dari 0 dan kurang dari atau sama dengan 1.0.

Jika eksekutor menggunakan bentuk memori, properti ini menentukan cara memori dari bentuk memori dibagi antara spark.executor.memory dan spark.executor.memoryOverhead. Menetapkan properti ini tidak mengubah bentuk memori eksekutor.

0.1, kecuali untuk workload batch PySpark, yang secara default ditetapkan ke 0.4 0.2, 0.3
spark.dataproc.executor.memory.shape

Hanya didukung di runtime 4.0 dan yang lebih baru. Bentuk memori dari eksekutor, baik highmem atau standard. Bentuk memori highmem menyediakan memori sebesar 7,75 GiB per vCPU, dan bentuk memori standard menyediakan memori sebesar 3,75 GiB per vCPU. Managed Service untuk Apache Spark membagi memori ini antara spark.executor.memory dan spark.executor.memoryOverhead.

Anda tidak dapat menetapkan properti ini bersama dengan spark.executor.memory atau spark.executor.memoryOverhead. Untuk mengubah cara pembagian memori bentuk memori, tetapkan spark.executor.memoryOverheadFactor.

highmem highmem, standard
spark.dataproc.executor.compute.tier Hanya didukung di runtime 3.0 dan yang lebih lama. Paket komputasi yang akan digunakan pada eksekutor. Paket komputasi Premium menawarkan performa per core yang lebih tinggi, tetapi ditagih dengan tarif yang lebih tinggi. Di runtime 4.0 dan yang lebih baru, gunakan properti dataproc.tier. standar standar, premium
spark.dataproc.executor.disk.size Jumlah kapasitas disk yang dialokasikan untuk setiap eksekutor, yang ditentukan dengan akhiran unit ukuran ("k", "m", "g", atau "t"). Kapasitas disk eksekutor dapat digunakan untuk data shuffle dan untuk men-stage dependensi. Minimal harus 250GiB. Jika paket disk Premium dipilih pada eksekutor, ukuran yang valid adalah 375g, 750g, 1500g, 3000g, 6000g, atau 9000g. Jika paket disk Premium dan 16 core eksekutor dipilih, ukuran disk minimum adalah 750g.

Di runtime 4.0 dan yang lebih baru, tingkat workload menentukan ukuran disk default setiap eksekutor. Untuk mengetahui informasi selengkapnya, lihat Ukuran disk default.

  • Runtime 4.0 dan yang lebih baru: bergantung pada paket
  • Runtime sebelumnya: 100GiB per core
1024g, 2t
spark.dataproc.executor.disk.tier Hanya didukung di runtime 3.0 dan yang lebih lama. Tingkat disk yang akan digunakan untuk penyimpanan lokal dan shuffle pada eksekutor. Paket disk Premium menawarkan performa yang lebih baik dalam IOPS dan throughput, tetapi ditagih dengan tarif yang lebih tinggi. Jika paket disk Premium dipilih pada executor, paket komputasi Premium juga harus dipilih menggunakan spark.dataproc.executor.compute.tier=premium, dan jumlah kapasitas disk harus ditentukan menggunakan spark.dataproc.executor.disk.size.

Jika paket disk Premium dipilih, setiap eksekutor akan dialokasikan kapasitas disk tambahan sebesar 50 GiB untuk penyimpanan sistem, yang tidak dapat digunakan oleh aplikasi pengguna.

Di runtime 4.0 dan yang lebih baru, gunakan properti dataproc.tier.

standar standar, premium
spark.executor.instances Jumlah awal eksekutor yang akan dialokasikan. Setelah workload batch dimulai, penskalaan otomatis dapat mengubah jumlah eksekutor aktif. Harus minimal 2 dan maksimal 2000.

Properti penskalaan otomatis

Lihat properti alokasi dinamis Spark untuk mengetahui daftar properti Spark yang dapat Anda gunakan untuk mengonfigurasi penskalaan otomatis Managed Service untuk Apache Spark.

Properti logging

Properti Deskripsi Default Contoh
spark.log.level Jika ditetapkan, setelan ini akan mengganti setelan log yang ditentukan pengguna dengan efek panggilan ke SparkContext.setLogLevel() saat memulai Spark. Level log yang valid mencakup: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, dan WARN. INFO, DEBUG
spark.executor.syncLogLevel.enabled Jika ditetapkan ke true, level log yang diterapkan melalui metode SparkContext.setLogLevel() akan disebarkan ke semua eksekutor. false true, false
spark.log.level.PackageName Jika ditetapkan, setelan ini akan mengganti setelan log yang ditentukan pengguna dengan efek panggilan ke SparkContext.setLogLevel(PackageName, level) saat Spark dimulai. Level log yang valid mencakup: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, dan WARN. spark.log.level.org.apache.spark=error

Properti penjadwalan

Properti Deskripsi Default Contoh
spark.scheduler.excludeShuffleSkewExecutors Mengecualikan eksekutor miring peta shuffle saat menjadwalkan, yang dapat mengurangi waktu tunggu pengambilan shuffle yang lama yang disebabkan oleh kemiringan penulisan shuffle. false true
spark.scheduler.shuffleSkew.minFinishedTasks Jumlah minimum tugas peta shuffle yang selesai pada eksekutor untuk diperlakukan sebagai skew. 10 100
spark.scheduler.shuffleSkew.maxExecutorsNumber Jumlah maksimum eksekutor yang akan diperlakukan sebagai skew. Executor yang miring dikecualikan dari putaran penjadwalan saat ini. 5 10
spark.scheduler.shuffleSkew.maxExecutorsRatio Rasio maksimum total eksekutor yang akan diperlakukan sebagai skew. Executor yang miring dikecualikan dari penjadwalan. 0,05 0.1
spark.scheduler.shuffleSkew.ratio Kelipatan tugas peta shuffle yang telah selesai rata-rata pada executor untuk diperlakukan sebagai skew. 1,5 2.0

Properti lainnya

Properti Deskripsi
dataproc.diagnostics.enabled **Hanya didukung di runtime 2.3 dan yang lebih lama**. Aktifkan properti ini untuk menjalankan diagnostik pada kegagalan atau pembatalan workload batch. Jika diagnostik diaktifkan, workload batch Anda akan terus menggunakan resource komputasi setelah workload selesai hingga diagnostik selesai. URI yang mengarah ke lokasi file tar diagnostik tercantum di kolom API Batch.RuntimeInfo.diagnosticOutputUri.
dataproc.gcsConnector.version **Hanya didukung di runtime 2.3 dan yang lebih lama**. Gunakan properti ini untuk mengupgrade ke versi konektor Cloud Storage yang berbeda dari versi yang diinstal dengan versi runtime workload batch Anda.
dataproc.sparkBqConnector.version **Hanya didukung di runtime 2.3 dan yang lebih lama**. Gunakan properti ini untuk mengupgrade ke versi konektor BigQuery Spark yang berbeda dari versi yang diinstal dengan versi runtime workload batch Anda (lihat Menggunakan konektor BigQuery dengan Managed Service untuk Apache Spark).
dataproc.profiling.enabled **Hanya didukung di runtime 2.3 dan yang lebih lama**. Tetapkan properti ini ke true guna mengaktifkan pembuatan profil untuk workload Managed Service untuk Apache Spark.
dataproc.profiling.name **Hanya didukung di runtime 2.3 dan yang lebih lama** Gunakan properti ini untuk menetapkan nama yang digunakan untuk membuat profil di layanan Profiler.
spark.jars Gunakan properti ini untuk menetapkan daftar jar yang dipisahkan koma untuk disertakan pada classpath driver dan eksekutor
spark.archives Gunakan properti ini untuk menetapkan daftar arsip yang dipisahkan koma untuk diekstrak ke direktori kerja setiap eksekutor. .jar, .tar.gz, .tgz, dan .zip didukung. Untuk sesi interaktif serverless, tambahkan properti ini saat membuat sesi interaktif atau profil runtime (template sesi).
dataproc.artifacts.remove Gunakan properti ini untuk menghapus artefak default yang diinstal di runtime Managed Service untuk Apache Spark. Artefak yang didukung adalah conscrypt, delta-lake, iceberg, rapids, dan spark-bigquery-connector.