Menyesuaikan workload batch Spark secara otomatis

Dokumen ini memberikan informasi tentang penyetelan otomatis workload batch Serverless for Apache Spark. Mengoptimalkan workload Spark untuk performa dan ketahanan bisa menjadi tantangan karena banyaknya opsi konfigurasi Spark dan sulitnya menilai dampak opsi tersebut terhadap workload. Penyesuaian otomatis Serverless for Apache Spark memberikan 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 (yang disebut "kohor").

Mendaftar untuk penyesuaian otomatis Serverless for Apache Spark

Untuk mendaftar akses ke rilis pratinjau penyetelan otomatis Serverless for 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

Penyesuaian otomatis Serverless for Apache Spark dapat memberikan manfaat berikut:

  • Pengoptimalan otomatis: Menyesuaikan konfigurasi batch dan Spark Serverless for Apache Spark yang tidak efisien secara otomatis, yang dapat mempercepat runtime tugas.
  • Pembelajaran historis: Pelajari dari proses yang berulang untuk menerapkan rekomendasi yang disesuaikan dengan workload Anda.

Kohor penyetelan otomatis

Penyesuaian otomatis diterapkan pada eksekusi berulang (kohor) beban kerja batch.

Nama kohor yang Anda tentukan saat mengirimkan workload batch mengidentifikasinya sebagai salah satu run berturut-turut dari workload berulang.

Penyesuaian otomatis diterapkan ke kohor workload batch sebagai berikut:

  • Penyetelan otomatis dihitung dan diterapkan ke kohor kedua dan berikutnya dari beban kerja. Penyetelan otomatis tidak diterapkan pada run pertama workload berulang karena penyetelan otomatis Serverless for Apache Spark menggunakan histori workload untuk pengoptimalan.

  • Penyesuaian otomatis tidak diterapkan secara surut ke beban kerja yang sedang berjalan, tetapi diterapkan hanya ke beban kerja yang baru dikirimkan.

  • Penyesuaian otomatis mempelajari dan meningkat dari waktu ke waktu dengan menganalisis statistik kohor. Agar sistem dapat mengumpulkan data yang cukup, sebaiknya aktifkan penyetelan otomatis selama minimal lima kali proses.

Nama kohor: Praktik yang direkomendasikan adalah menggunakan nama kohor yang membantu mengidentifikasi jenis beban kerja berulang. Misalnya, Anda dapat menggunakan daily_sales_aggregation sebagai nama kohor untuk workload terjadwal yang menjalankan tugas agregasi penjualan harian.

Skenario penyetelan otomatis

Jika berlaku, penyesuaian otomatis akan otomatis memilih dan mengeksekusi scenarios atau sasaran berikut untuk mengoptimalkan workload batch:

  • Penskalaan: Setelan konfigurasi penskalaan otomatis Spark.
  • Pengoptimalan gabungan: Setelan konfigurasi Spark untuk mengoptimalkan performa gabungan siaran SQL.

Menggunakan penyesuaian otomatis Serverless for Apache Spark

Anda dapat mengaktifkan penyesuaian otomatis Serverless untuk Apache Spark pada beban kerja batch dengan menggunakan Google Cloud konsol, Google Cloud CLI, atau Dataproc API, atau Library Klien Cloud.

Konsol

Untuk mengaktifkan penyesuaian otomatis Serverless for Apache Spark pada setiap pengiriman workload batch berulang, lakukan langkah-langkah berikut:

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

    Buka Batch Dataproc

  2. Untuk membuat workload batch, klik Buat.

  3. Di bagian Autotuning:

    • Geser tombol Aktifkan untuk mengaktifkan penyetelan otomatis untuk workload Spark.

    • Cohort: Isi nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang. Penyetelan otomatis diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, tentukan daily_sales_aggregation sebagai nama kohor untuk workload batch terjadwal yang menjalankan tugas agregasi penjualan harian.

  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 secara lokal di jendela terminal atau di Cloud Shell.

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    --autotuning-scenarios=auto  \
    other arguments ...

Ganti kode berikut:

  • COMMAND: jenis beban kerja Spark, seperti Spark, PySpark, Spark-Sql, atau Spark-R.
  • REGION: region tempat workload batch Anda akan berjalan.
  • COHORT: nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang. Penyetelan otomatis diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, tentukan daily_sales_aggregation sebagai nama kohor untuk beban kerja batch terjadwal yang menjalankan tugas agregasi penjualan harian.
  • --autotuning-scenarios=auto: Mengaktifkan penyesuaian otomatis.

API

Untuk mengaktifkan penyesuaian otomatis Serverless for Apache Spark pada setiap pengiriman workload batch berulang, kirimkan permintaan batches.create yang menyertakan kolom berikut:

  • RuntimeConfig.cohort: nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja 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 batch terjadwal yang menjalankan tugas agregasi penjualan harian.
  • AutotuningConfig.scenarios: Tentukan AUTO untuk mengaktifkan penyetelan otomatis pada beban kerja batch Spark.

Contoh:

...
runtimeConfig:
  cohort: COHORT_NAME
  autotuningConfig:
    scenarios:
    - AUTO
...

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Serverless for 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:

  • Batch.RuntimeConfig.cohort: Nama cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang. Penyesuaian otomatis diterapkan pada beban kerja kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, Anda dapat menentukan daily_sales_aggregation sebagai nama kohor untuk beban kerja batch terjadwal yang menjalankan tugas agregasi penjualan harian.
  • Batch.RuntimeConfig.AutotuningConfig.scenarios: Tentukan AUTO untuk mengaktifkan penyetelan otomatis pada workload batch Spark.

Contoh:

...
Batch batch =
  Batch.newBuilder()
    .setRuntimeConfig(
      RuntimeConfig.newBuilder()
        .setCohort("daily_sales_aggregation")
        .setAutotuningConfig(
          AutotuningConfig.newBuilder()
            .addScenarios(Scenario.AUTO))
    ...
  .build();

batchControllerClient.createBatch(
    CreateBatchRequest.newBuilder()
        .setParent(parent)
        .setBatchId(batchId)
        .setBatch(batch)
        .build());
...

Untuk menggunakan API, Anda harus menggunakan library klien versi google-cloud-dataproc 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 for 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 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 workload berulang. Penyetelan otomatis diterapkan pada beban kerja kedua dan berikutnya yang dikirimkan dengan nama kohor ini. Misalnya, Anda dapat menentukan daily_sales_aggregation sebagai nama kohor untuk workload batch terjadwal yang menjalankan tugas agregasi penjualan harian.
  • batch.runtime_config.autotuning_config.scenarios: Tentukan AUTO untuk mengaktifkan penyetelan otomatis pada workload batch Spark.

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.AUTO
]

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

Daripada mengirimkan setiap kohor batch yang di-tune otomatis secara manual, Anda dapat menggunakan Airflow untuk menjadwalkan pengiriman setiap workload batch berulang. Untuk melakukannya, panggil BatchControllerClient.create_batch dengan Batch yang menyertakan kolom berikut:

  • batch.runtime_config.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, Anda dapat menentukan daily_sales_aggregation sebagai nama kohor untuk beban kerja batch terjadwal yang menjalankan tugas agregasi penjualan harian.
  • batch.runtime_config.autotuning_config.scenarios: Tentukan AUTO untuk mengaktifkan penyetelan otomatis pada workload batch Spark.

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.AUTO,
                ]
            }
        },
    },
    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 penyetelan otomatis Serverless for Apache Spark pada workload batch, jalankan perintah gcloud dataproc batches describe.

Contoh: Output gcloud dataproc batches describe mirip dengan berikut ini:

...
runtimeInfo:
  propertiesInfo:
    # Properties set by autotuning.
    autotuningProperties:
      spark.dataproc.sql.broadcastJoin.hints:
        annotation: Converted 1 Sort-Merge Joins to Broadcast Hash Join
        value: v2;Inner,<hint>
      spark.dynamicAllocation.initialExecutors:
        annotation: Adjusted Initial executors based on stages submitted in first
          2 minutes to 9
        overriddenValue: '2'
        value: '9'
      spark.dynamicAllocation.maxExecutors:
        annotation: Tuned Max executors to 11
        overriddenValue: '5'
        value: '11'
      spark.dynamicAllocation.minExecutors:
        annotation: Changed Min executors to 9
        overriddenValue: '2'
        value: '9'
...

Anda dapat melihat perubahan penyetelan otomatis terbaru yang diterapkan pada workload yang sedang berjalan, selesai, atau gagal di halaman Detail batch di konsol Google Cloud , di tab Ringkasan.

Panel ringkasan penyetelan otomatis.

Harga

Penyesuaian otomatis Serverless for Apache Spark ditawarkan selama pratinjau pribadi tanpa biaya tambahan. Harga Serverless for Apache Spark standar berlaku.