Dokumen ini memberikan informasi tentang penyetelan otomatis workload Spark. Mengoptimalkan workload Spark untuk performa dan ketahanan bisa jadi sulit karena banyaknya opsi konfigurasi Spark dan sulitnya menilai dampak opsi tersebut terhadap workload. Google Cloud Penyetelan otomatis Serverless for Apache Spark menyediakan alternatif untuk konfigurasi workload manual dengan menerapkan setelan konfigurasi Spark secara otomatis ke workload Spark berulang berdasarkan praktik terbaik pengoptimalan Spark dan analisis eksekusi workload.
Mendaftar ke Google Cloud Penyetelan otomatis Serverless untuk Apache Spark
Untuk mendaftar akses ke rilis pratinjau penyetelan otomatis Serverless untuk Apache Spark yang dijelaskan di halaman ini, lengkapi dan kirimkan formulir pendaftaran Permintaan akses Pratinjau Dataproc. Setelah formulir disetujui, project yang tercantum dalam formulir akan memiliki akses ke fitur pratinjau.
Manfaat
Google Cloud Penyesuaian otomatis Serverless for Apache Spark dapat memberikan manfaat berikut:
- Peningkatan performa: Penyesuaian pengoptimalan untuk meningkatkan performa
- Pengoptimalan yang lebih cepat: Konfigurasi otomatis untuk menghindari pengujian konfigurasi manual yang memakan waktu
- Peningkatan ketahanan: Alokasi memori otomatis untuk menghindari kegagalan terkait memori
Batasan
Google Cloud Penyetelan otomatis Serverless for Apache Spark memiliki batasan berikut:
- Penyesuaian otomatis dihitung dan diterapkan pada eksekusi kedua dan berikutnya dari beban kerja. Run pertama workload berulang tidak disetel otomatis karena Google Cloud penyetelan otomatis Serverless for Apache Spark menggunakan histori workload untuk pengoptimalan.
- Penurunan ukuran memori tidak didukung.
- Penyesuaian otomatis tidak diterapkan secara surut ke workload yang sedang berjalan, hanya ke kohor workload yang baru dikirimkan.
Kohor penyetelan otomatis
Penyetelan otomatis diterapkan pada eksekusi berulang dari beban kerja batch, yang disebut kohor.
Nama kohor yang Anda tentukan saat mengirimkan workload
mengidentifikasinya sebagai salah satu dari beberapa eksekusi berturut-turut dari workload berulang.
Sebaiknya gunakan nama kohor yang menjelaskan jenis workload atau yang membantu mengidentifikasi run workload sebagai bagian dari workload berulang. Misalnya, tentukan daily_sales_aggregation
sebagai
nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.
Skenario penyetelan otomatis
Anda menerapkan penyetelan otomatis Serverless for Apache Spark ke workload dengan memilih satu atau beberapa skenario penyetelan otomatis berikut: Google Cloud
MEMORY
: Menyetel otomatis alokasi memori Spark untuk memprediksi dan menghindari potensi error kehabisan memori beban kerja. Memperbaiki beban kerja yang sebelumnya gagal karena error kehabisan memori (OOM).SCALING
: Menyetel otomatis setelan konfigurasi penskalaan otomatis Spark.BROADCAST_HASH_JOIN
: Menyetel otomatis setelan konfigurasi Spark untuk mengoptimalkan performa gabungan siaran SQL.
Harga
Google Cloud Penyesuaian otomatis Serverless for Apache Spark ditawarkan selama pratinjau tanpa biaya tambahan. Harga Google Cloud Serverless untuk Apache Spark standar berlaku.
Ketersediaan regional
Anda dapat menggunakan penyesuaian otomatis Serverless for Apache Spark dengan batch yang dikirimkan di region Compute Engine yang tersedia. Google Cloud
Menggunakan Google Cloud Penyetelan otomatis Serverless untuk Apache Spark
Anda dapat mengaktifkan penyetelan otomatis Google Cloud Serverless for Apache Spark pada beban kerja menggunakan Google Cloud konsol, Google Cloud CLI, atau Dataproc API.
Konsol
Untuk mengaktifkan penyesuaian otomatis Serverless for Apache Spark pada setiap pengiriman workload batch berulang, lakukan langkah-langkah berikut: Google Cloud
Di konsol Google Cloud , buka halaman Batch Dataproc.
Untuk membuat workload batch, klik Buat.
Di bagian Container, isi kolom berikut untuk workload Spark Anda:
Cohort: nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang. Penyetelan otomatis diterapkan pada beban kerja kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, tentukan
daily_sales_aggregation
sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.Skenario penyesuaian otomatis: satu atau beberapa skenario penyesuaian otomatis yang akan digunakan untuk mengoptimalkan beban kerja, misalnya,
BROADCAST_HASH_JOIN
,MEMORY
, danSCALING
. Anda dapat mengubah pilihan skenario dengan setiap pengiriman kohor batch.
Isi bagian lain di halaman Buat batch sesuai kebutuhan, lalu klik Kirim. Untuk mengetahui informasi selengkapnya tentang kolom ini, lihat Mengirimkan workload batch.
gcloud
Untuk mengaktifkan penyesuaian otomatis Serverless for Apache Spark pada setiap pengiriman beban kerja batch berulang, jalankan perintah gcloud CLI
gcloud dataproc batches submit
berikut secara lokal di jendela terminal atau di
Cloud Shell. Google Cloud
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ --autotuning-scenarios=SCENARIOS \ other arguments ...
Ganti kode berikut:
- COMMAND: jenis beban kerja Spark, seperti
Spark
,PySpark
,Spark-Sql
, atauSpark-R
. - REGION: region tempat workload Anda akan berjalan.
COHORT: nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang. Penyesuaian otomatis diterapkan ke beban kerja kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, tentukan
daily_sales_aggregation
sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.SCENARIOS: satu atau beberapa skenario penyetelan otomatis yang dipisahkan koma untuk digunakan dalam mengoptimalkan workload, misalnya,
--autotuning-scenarios=MEMORY,SCALING
. Anda dapat mengubah daftar skenario dengan setiap pengiriman kohor batch.
API
Untuk mengaktifkan penyesuaian otomatis Google Cloud Serverless for Apache Spark pada setiap pengiriman workload batch berulang, kirim permintaan batches.create yang menyertakan kolom berikut:
RuntimeConfig.cohort
: nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang. Penyesuaian otomatis diterapkan pada workload kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, tentukandaily_sales_aggregation
sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.AutotuningConfig.scenarios
: satu atau beberapa skenario penyetelan otomatis yang akan digunakan untuk mengoptimalkan beban kerja, misalnya,BROADCAST_HASH_JOIN
,MEMORY
, danSCALING
. Anda dapat mengubah daftar skenario dengan setiap pengiriman kohor batch.
Contoh:
...
runtimeConfig:
cohort: daily_sales_aggregation
autotuningConfig:
scenarios:
- BROADCAST_HASH_JOIN
- MEMORY
- SCALING
...
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Serverless untuk Apache Spark menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Serverless untuk Apache Spark.
Untuk melakukan autentikasi ke Serverless for Apache Spark, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Untuk mengaktifkan penyesuaian otomatis Serverless for Apache Spark pada setiap pengiriman workload batch berulang, panggil BatchControllerClient.createBatch dengan CreateBatchRequest yang menyertakan kolom berikut: Google Cloud
Batch.RuntimeConfig.cohort
: Nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang. Penyesuaian otomatis diterapkan pada workload kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, Anda dapat menentukandaily_sales_aggregation
sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.Batch.RuntimeConfig.AutotuningConfig.scenarios
: Satu atau beberapa skenario penyetelan otomatis yang akan digunakan untuk mengoptimalkan beban kerja, seperti,BROADCAST_HASH_JOIN
,MEMORY
,SCALING
. Anda dapat mengubah daftar skenario dengan setiap pengiriman kohor batch. Untuk mengetahui daftar lengkap skenario, lihat Javadoc AutotuningConfig.Scenario.
Contoh:
...
Batch batch =
Batch.newBuilder()
.setRuntimeConfig(
RuntimeConfig.newBuilder()
.setCohort("daily_sales_aggregation")
.setAutotuningConfig(
AutotuningConfig.newBuilder()
.addScenarios(Scenario.SCALING))
...
.build();
batchControllerClient.createBatch(
CreateBatchRequest.newBuilder()
.setParent(parent)
.setBatchId(batchId)
.setBatch(batch)
.build());
...
Untuk menggunakan API, Anda harus menggunakan library klien google-cloud-dataproc
versi 4.43.0
atau yang lebih baru. Anda dapat menggunakan salah satu konfigurasi berikut untuk menambahkan library ke project Anda.
Maven
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-dataproc</artifactId>
<version>4.43.0</version>
</dependency>
</dependencies>
Gradle
implementation 'com.google.cloud:google-cloud-dataproc:4.43.0'
SBT
libraryDependencies += "com.google.cloud" % "google-cloud-dataproc" % "4.43.0"
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Serverless untuk Apache Spark menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Python API Serverless untuk Apache Spark.
Untuk melakukan autentikasi ke Serverless for Apache Spark, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Untuk mengaktifkan penyesuaian otomatis Google Cloud Serverless for Apache Spark pada setiap pengiriman workload batch berulang, panggil BatchControllerClient.create_batch dengan Batch yang mencakup kolom berikut:
batch.runtime_config.cohort
: Nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang. Penyesuaian otomatis diterapkan pada workload kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, Anda dapat menentukandaily_sales_aggregation
sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.batch.runtime_config.autotuning_config.scenarios
: Satu atau beberapa skenario penyetelan otomatis yang akan digunakan untuk mengoptimalkan beban kerja, sepertiBROADCAST_HASH_JOIN
,MEMORY
,SCALING
. Anda dapat mengubah daftar skenario dengan setiap pengiriman kohor batch. Untuk mengetahui daftar lengkap skenario, lihat referensi Skenario.
Contoh:
# Create a client
client = dataproc_v1.BatchControllerClient()
# Initialize request argument(s)
batch = dataproc_v1.Batch()
batch.pyspark_batch.main_python_file_uri = "gs://bucket/run_tpcds.py"
batch.runtime_config.cohort = "daily_sales_aggregation"
batch.runtime_config.autotuning_config.scenarios = [
Scenario.SCALING
]
request = dataproc_v1.CreateBatchRequest(
parent="parent_value",
batch=batch,
)
# Make the request
operation = client.create_batch(request=request)
Untuk menggunakan API, Anda harus menggunakan library klien google-cloud-dataproc
versi 5.10.1
atau yang lebih baru. Untuk menambahkannya ke project, Anda dapat menggunakan persyaratan berikut:
google-cloud-dataproc>=5.10.1
Airflow
Untuk mengaktifkan penyesuaian otomatis Google Cloud Serverless for Apache Spark pada setiap pengiriman workload batch berulang, panggil BatchControllerClient.create_batch dengan Batch yang mencakup kolom berikut:
batch.runtime_config.cohort
: Nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang. Penyesuaian otomatis diterapkan pada workload kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, Anda dapat menentukandaily_sales_aggregation
sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.batch.runtime_config.autotuning_config.scenarios
: Satu atau beberapa skenario penyetelan otomatis yang akan digunakan untuk mengoptimalkan beban kerja, misalnya,BROADCAST_HASH_JOIN
,MEMORY
,SCALING
. Anda dapat mengubah daftar skenario dengan setiap pengiriman kohor batch. Untuk mengetahui daftar lengkap skenario, lihat referensi Skenario.
Contoh:
create_batch = DataprocCreateBatchOperator(
task_id="batch_create",
batch={
"pyspark_batch": {
"main_python_file_uri": PYTHON_FILE_LOCATION,
},
"environment_config": {
"peripherals_config": {
"spark_history_server_config": {
"dataproc_cluster": PHS_CLUSTER_PATH,
},
},
},
"runtime_config": {
"cohort": "daily_sales_aggregation",
"autotuning_config": {
"scenarios": [
Scenario.SCALING,
]
}
},
},
batch_id="BATCH_ID",
)
Untuk menggunakan API, Anda harus menggunakan library klien google-cloud-dataproc
versi 5.10.1
atau yang lebih baru. Anda dapat menggunakan persyaratan lingkungan Airflow berikut:
google-cloud-dataproc>=5.10.1
Untuk memperbarui paket di Cloud Composer, lihat Menginstal dependensi Python untuk Cloud Composer .
Melihat perubahan penyetelan otomatis
Untuk melihat perubahan penyesuaian otomatis Serverless for Apache Spark pada workload batch, jalankan perintah gcloud dataproc batches describe
. Google Cloud
Contoh: Output gcloud dataproc batches describe
mirip dengan berikut ini:
...
runtimeInfo:
propertiesInfo:
# Properties set by autotuning.
autotuningProperties
spark.driver.memory:
annotation: Driver OOM was detected
value: 11520m
spark.driver.memoryOverhead:
annotation: Driver OOM was detected
value: 4608m
# Old overwritten properties.
userProperties
...
Anda dapat melihat perubahan penyetelan otomatis terbaru yang diterapkan ke beban kerja yang sedang berjalan, selesai, atau gagal di halaman Detail batch di konsol Google Cloud , di tab Selidiki.