Menyetel otomatis workload batch Spark

Dokumen ini memberikan informasi tentang penyetelan otomatis workload batch Managed Service untuk 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 Managed Service 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 Managed Service untuk Apache Spark

Untuk mendaftar guna mendapatkan akses ke rilis pratinjau Managed Service untuk Apache Spark dengan fitur penyetelan otomatis yang dijelaskan di halaman ini, isi dan kirimkan formulir pendaftaran Permintaan akses Pratinjau Managed Service untuk Apache Spark. Setelah formulir disetujui, project yang tercantum dalam formulir akan memiliki akses ke fitur pratinjau.

Manfaat

Penyesuaian otomatis Managed Service untuk Apache Spark dapat memberikan manfaat berikut:

  • Pengoptimalan otomatis: Menyesuaikan konfigurasi batch Managed Service for Apache Spark dan 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

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

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

Penyetelan 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 Managed Service untuk 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 setidaknya untuk 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, penyetelan 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 Managed Service untuk Apache Spark

Anda dapat mengaktifkan penyesuaian otomatis Managed Service for Apache Spark pada beban kerja batch dengan menggunakan Google Cloud konsol, Google Cloud CLI, atau Dataproc API, atau Cloud Client Libraries.

Konsol

Untuk mengaktifkan penyesuaian otomatis Managed Service for Apache Spark pada setiap pengiriman beban kerja batch berulang, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Batches Managed Service for Apache Spark.

    Buka Managed Service untuk Batch Apache Spark

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

  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 Managed Service 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 beban kerja 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 Managed Service for Apache Spark pada setiap pengiriman beban kerja 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. 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.
  • 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 Managed Service untuk Apache Spark menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Managed Service for Apache Spark.

Untuk melakukan autentikasi ke Managed Service for Apache Spark, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Untuk mengaktifkan penyesuaian otomatis Managed Service untuk Apache Spark pada setiap pengiriman workload batch berulang, panggil BatchControllerClient.createBatch dengan CreateBatchRequest yang mencakup kolom berikut:

  • Batch.RuntimeConfig.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, 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 Managed Service untuk Apache Spark menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Managed Service for Apache Spark.

Untuk melakukan autentikasi ke Managed Service for Apache Spark, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Untuk mengaktifkan penyesuaian otomatis Managed Service 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. Penyetelan otomatis diterapkan ke workload 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 dioptimalkan secara 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 beban kerja berulang. Penyetelan otomatis diterapkan ke workload 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 Managed Service untuk Apache Airflow, lihat Menginstal dependensi Python untuk Managed Airflow .

Melihat perubahan penyetelan otomatis

Untuk melihat perubahan penyetelan otomatis Managed Service for Apache Spark pada beban kerja 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 beban kerja yang sedang berjalan, selesai, atau gagal di halaman Detail batch di konsol Google Cloud , di tab Ringkasan.

Panel ringkasan penyetelan otomatis.

Harga

Penyesuaian otomatis Managed Service untuk Apache Spark ditawarkan selama pratinjau pribadi tanpa biaya tambahan. Harga Standard Managed Service for Apache Spark berlaku.