Menyesuaikan otomatis workload Spark

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

  1. Di konsol Google Cloud , buka halaman Batch Dataproc.

    Buka Batch Dataproc

  2. Untuk membuat workload batch, klik Buat.

  3. 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, dan SCALING. Anda dapat mengubah pilihan skenario dengan setiap pengiriman kohor batch.

  4. 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, atau Spark-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, tentukan daily_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, dan SCALING. 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 menentukan daily_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 menentukan daily_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, seperti 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 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 menentukan daily_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.

Panel investigasi penyetelan otomatis.