Properti Spark

Dokumen ini menjelaskan properti Spark dan cara menyetelnya. Serverless untuk Apache Spark menggunakan properti Spark untuk menentukan resource komputasi, memori, dan disk yang akan dialokasikan ke workload batch Anda. Setelan properti ini dapat memengaruhi biaya dan penggunaan kuota beban kerja. Untuk mengetahui informasi selengkapnya, lihat kuota Serverless untuk Apache Spark dan harga Serverless untuk Apache Spark.

Menetapkan properti workload batch Spark

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

Konsol

  1. Di konsol Google Cloud , buka halaman Dataproc create batch.

    Buka Buat batch Dataproc

  2. Di bagian Properti, klik Tambahkan Properti.

  3. Masukkan Key (nama) dan Value dari properti Spark yang didukung.

gcloud

Contoh pengiriman batch gcloud CLI:

gcloud dataproc batches submit spark
    --properties=spark.checkpoint.compress=true \
    --region=region \
    other args ...

API

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

Properti Spark yang didukung

Serverless 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

Serverless for Apache Spark mendukung properti Spark kustom berikut untuk mengonfigurasi lingkungan runtime:

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

Properti alokasi resource

Serverless for 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, 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 standar (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 penampung 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 Standar (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.dataproc.driver.compute.tier Tingkat komputasi yang akan digunakan pada driver. Tingkat komputasi Premium menawarkan performa per inti yang lebih tinggi, tetapi ditagih dengan tarif yang lebih tinggi. standar standar, premium
spark.dataproc.driver.disk.size Jumlah ruang disk yang dialokasikan untuk driver, ditentukan dengan akhiran satuan ukuran ("k", "m", "g", atau "t"). Minimal harus 250GiB. Jika tingkat disk Premium dipilih di driver, ukuran yang valid adalah 375 g, 750 g, 1.500 g, 3.000 g, 6.000 g, atau 9.000 g. Jika tingkat disk Premium dan 16 core driver dipilih, ukuran disk minimum adalah 750 GB. 100GiB per core 1024g, 2t
spark.dataproc.driver.disk.tier Tingkatan disk yang akan digunakan untuk penyimpanan lokal dan shuffle pada driver. Tingkatan disk Premium menawarkan performa yang lebih baik dalam IOPS dan throughput, tetapi ditagih dengan tarif yang lebih tinggi. Jika tingkat disk Premium dipilih di driver, tingkat komputasi Premium juga harus dipilih menggunakan spark.dataproc.driver.compute.tier=premium, dan jumlah ruang disk harus ditentukan menggunakan spark.dataproc.executor.disk.size.

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

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, 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 tingkat komputasi Standar (24576m untuk tingkat 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 lainnya yang berjalan di dalam penampung. Ukuran memori maksimum penampung 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 tingkat komputasi Standar (24576m untuk tingkat komputasi Premium). Misalnya, jika spark.executor.cores = 4, maka 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

10% dari memori eksekutor, kecuali untuk workload batch PySpark, yang secara default adalah 40% dari memori eksekutor 512m, 2g
spark.dataproc.executor.compute.tier Tingkat komputasi yang akan digunakan pada eksekutor. Tingkat komputasi Premium menawarkan performa per inti yang lebih tinggi, tetapi ditagih dengan tarif yang lebih tinggi. standar standar, premium
spark.dataproc.executor.disk.size Jumlah ruang disk yang dialokasikan untuk setiap eksekutor, ditentukan dengan akhiran unit ukuran ("k", "m", "g", atau "t"). Ruang disk eksekutor dapat digunakan untuk mengacak data dan menyiapkan dependensi. Minimal harus 250GiB. Jika tingkat disk Premium dipilih di executor, ukuran yang valid adalah 375g, 750g, 1500g, 3000g, 6000g, atau 9000g. Jika tingkat disk Premium dan 16 core eksekutor dipilih, ukuran disk minimum adalah 750 GB. 100GiB per core 1024g, 2t
spark.dataproc.executor.disk.tier Tingkatan disk yang akan digunakan untuk penyimpanan lokal dan pengacakan pada eksekutor. Tingkatan disk Premium menawarkan performa yang lebih baik dalam IOPS dan throughput, tetapi ditagih dengan tarif yang lebih tinggi. Jika tingkat disk Premium dipilih di executor, tingkat komputasi Premium juga harus dipilih menggunakan spark.dataproc.executor.compute.tier=premium, dan jumlah ruang disk harus ditentukan menggunakan spark.dataproc.executor.disk.size.

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

standar standar, premium
spark.executor.instances Jumlah awal eksekutor yang akan dialokasikan. Setelah beban kerja 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 Serverless for Apache Spark.

Properti logging

Properti Deskripsi Default Contoh
spark.log.level Jika disetel, akan menggantikan setelan log yang ditentukan pengguna dengan efek panggilan ke SparkContext.setLogLevel() saat Spark dimulai. Level log yang valid mencakup: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, dan WARN. INFO, DEBUG
spark.executor.syncLogLevel.enabled Jika disetel ke true, tingkat log yang diterapkan melalui metode SparkContext.setLogLevel() akan diteruskan ke semua eksekutor. false true, false
spark.log.level.PackageName Jika disetel, akan menggantikan 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 yang memiringkan peta pengacakan saat menjadwalkan, yang dapat mengurangi waktu tunggu pengambilan pengacakan yang lama yang disebabkan oleh kemiringan penulisan pengacakan. false true
spark.scheduler.shuffleSkew.minFinishedTasks Jumlah minimum tugas peta acak yang selesai pada pelaksana untuk diperlakukan sebagai kemiringan. 10 100
spark.scheduler.shuffleSkew.maxExecutorsNumber Jumlah maksimum eksekutor yang akan diperlakukan sebagai kemiringan. Eksekutor yang miring dikecualikan dari putaran penjadwalan saat ini. 5 10
spark.scheduler.shuffleSkew.maxExecutorsRatio Rasio maksimum total eksekutor yang akan diperlakukan sebagai kemiringan. Eksekutor yang miring dikecualikan dari penjadwalan. 0,05 0.1
spark.scheduler.shuffleSkew.ratio Kelipatan tugas peta pengacakan yang selesai rata-rata di executor untuk diperlakukan sebagai kecondongan. 1,5 2.0

Properti lainnya

Properti Deskripsi
dataproc.diagnostics.enabled Aktifkan properti ini untuk menjalankan diagnostik pada kegagalan atau pembatalan beban kerja batch. Jika diagnostik diaktifkan, workload batch Anda akan terus menggunakan resource komputasi setelah workload selesai hingga diagnostik selesai. URI yang mengarah ke lokasi tarball diagnostik tercantum di kolom API Batch.RuntimeInfo.diagnosticOutputUri.
dataproc.gcsConnector.version Gunakan properti ini untuk mengupgrade ke versi konektor Cloud Storage yang berbeda dengan versi yang diinstal dengan versi runtime beban kerja batch Anda.
dataproc.sparkBqConnector.version Gunakan properti ini untuk mengupgrade ke versi konektor Spark BigQuery yang berbeda dengan versi yang diinstal dengan versi runtime workload batch Anda (lihat Menggunakan konektor BigQuery dengan Serverless untuk Apache Spark).
dataproc.profiling.enabled Setel properti ini ke true untuk mengaktifkan pembuatan profil untuk workload Serverless untuk Apache Spark.
dataproc.profiling.name Gunakan properti ini untuk menetapkan nama yang digunakan untuk membuat profil di layanan Profiler.
spark.jars Gunakan properti ini untuk menyetel daftar jar yang dipisahkan koma yang akan disertakan di jalur class driver dan executor
spark.archives Gunakan properti ini untuk menyetel daftar arsip yang dipisahkan koma yang akan diekstrak ke direktori kerja setiap eksekutor. .jar, .tar.gz, .tgz, dan .zip didukung. Untuk sesi interaktif serverless, tambahkan properti ini saat membuat sesi/template interaktif