Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Dokumen ini memberikan informasi tentang Google Cloud penskalaan otomatis Serverless for Apache Spark.
Saat Anda mengirimkan workload Spark, Serverless untuk Apache Spark dapat menskalakan resource workload secara dinamis, seperti jumlah eksekutor, untuk menjalankan workload Anda secara efisien. Penskalaan otomatis Serverless untuk Apache Spark adalah perilaku default, dan menggunakan alokasi resource dinamis Spark untuk menentukan apakah, bagaimana, dan kapan harus menskalakan workload Anda.
Penskalaan otomatis V2 untuk Apache Spark serverless
Penskalaan otomatis Serverless untuk Apache Spark versi 2 (V2) menambahkan fitur dan peningkatan
ke versi 1 (V1) default untuk membantu Anda mengelola workload Serverless untuk Apache Spark, meningkatkan
performa workload, dan menghemat biaya:
Pengecilan skala node asinkron: Penskalaan Otomatis V2 menggantikan pengecilan skala sinkron V1 dengan pengecilan skala asinkron. Dengan penurunan skala asinkron, Serverless untuk Apache Spark menurunkan skala resource workload tanpa menunggu semua node menyelesaikan migrasi shuffle. Artinya, node ekor panjang yang diperkecil skalanya secara perlahan
tidak akan memblokir penskalaan ke atas.
Pemilihan node untuk penskalaan bawah yang cerdas: Penskalaan Otomatis V2 menggantikan pemilihan node acak V1 dengan algoritma cerdas yang mengidentifikasi node terbaik untuk diturunkan skalanya terlebih dahulu. Algoritma ini mempertimbangkan faktor-faktor seperti ukuran data pengacakan dan waktu tidak ada aktivitas node.
Perilaku migrasi shuffle dan penonaktifan yang lancar untuk Spark yang dapat dikonfigurasi:
Autoscaling V2 memungkinkan Anda menggunakan properti Spark standar untuk mengonfigurasi penonaktifan yang lancar dan migrasi shuffle Spark. Fitur ini dapat membantu Anda mempertahankan kompatibilitas migrasi dengan properti Spark yang disesuaikan.
Fitur penskalaan otomatis Serverless for Apache Spark
Fitur
Penskalaan Otomatis Serverless untuk Apache Spark V1
Penskalaan Otomatis V2 untuk Apache Spark Serverless
Apakah akan menggunakan alokasi resource dinamis, yang meningkatkan dan menurunkan skala
jumlah eksekutor berdasarkan workload.
Menetapkan nilai ke false akan menonaktifkan penskalaan otomatis untuk beban kerja. Default: true.
true
spark.dynamicAllocation.initialExecutors
Jumlah awal eksekutor yang dialokasikan ke workload. Setelah
workload dimulai, penskalaan otomatis dapat mengubah jumlah eksekutor aktif.
Nilai minimum adalah 2; nilai maksimum adalah 2000.
2
spark.dynamicAllocation.minExecutors
Jumlah minimum eksekutor untuk memperkecil skala beban kerja.
Nilai minimum adalah 2.
2
spark.dynamicAllocation.maxExecutors
Jumlah maksimum eksekutor untuk meningkatkan skala beban kerja.
Nilai maksimum adalah 2000.
1000
spark.dynamicAllocation.executorAllocationRatio
Menyesuaikan penskalaan beban kerja Spark. Menerima nilai dari
0 hingga 1. Nilai 1.0
memberikan kemampuan penskalaan maksimum dan membantu mencapai paralelisme
maksimum. Nilai 0.5 menetapkan kapabilitas peningkatan skala dan
paralelisme pada setengah dari nilai maksimum.
0.3
spark.reducer.fetchMigratedShuffle.enabled
Jika disetel ke true, memungkinkan pengambilan lokasi
output pengacakan dari driver Spark setelah pengambilan gagal dari executor yang
dihentikan karena alokasi dinamis Spark. Hal ini mengurangi
error ExecutorDeadException yang disebabkan oleh migrasi blok shuffle
dari executor yang dihentikan ke executor aktif, dan mengurangi percobaan ulang tahap
yang disebabkan oleh error FetchFailedException (lihat
FetchFailedException yang disebabkan oleh
ExecutorDeadException).
Properti ini tersedia di Serverless for Apache Spark
versi runtime Spark1.1.12 dan yang lebih baru serta 2.0.20 dan yang lebih baru.
false
Metrik alokasi dinamis Spark
Workload batch Spark menghasilkan metrik berikut yang terkait dengan alokasi resource dinamis Spark (untuk informasi tambahan tentang metrik Spark, lihat Pemantauan dan Instrumentasi).
Metrik
Deskripsi
maximum-needed
Jumlah maksimum eksekutor yang diperlukan di bawah beban saat ini untuk memenuhi
semua tugas yang sedang berjalan dan menunggu persetujuan.
running
Jumlah eksekutor yang sedang menjalankan tugas.
Masalah dan solusi alokasi dinamis Spark
FetchFailedException yang disebabkan oleh ExecutorDeadException
Penyebab: Saat alokasi dinamis Spark menurunkan skala eksekutor, file shuffle akan dimigrasikan ke eksekutor aktif. Namun, karena tugas reducer Spark pada executor mengambil output shuffle dari lokasi yang ditetapkan oleh driver Spark saat tugas reducer dimulai, jika file shuffle dimigrasikan, reducer dapat terus mencoba mengambil output shuffle dari executor yang dihentikan, sehingga menyebabkan error ExecutorDeadException dan FetchFailedException.
Solusi: Aktifkan pengambilan ulang lokasi shuffle dengan menyetel
spark.reducer.fetchMigratedShuffle.enabled ke true saat Anda menjalankan
workload batch Serverless untuk Apache Spark (lihat
Menetapkan properti workload batch Spark).
Jika properti ini diaktifkan, tugas reducer akan mengambil ulang lokasi output shuffle dari driver setelah pengambilan dari executor yang dihentikan gagal.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-25 UTC."],[[["\u003cp\u003eDataproc Serverless for Spark uses dynamic resource allocation to automatically scale workload resources, such as the number of executors, for efficient processing.\u003c/p\u003e\n"],["\u003cp\u003eAutoscaling V2 is an improved version of the default V1 and offers asynchronous node downscaling, intelligent node selection for downscaling, and configurable Spark graceful decommissioning and shuffle migration behavior.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003espark.dataproc.scaling.version\u003c/code\u003e property controls whether autoscaling V1 or V2 is active, and setting it to \u003ccode\u003e2\u003c/code\u003e enables V2's enhanced features.\u003c/p\u003e\n"],["\u003cp\u003eVarious Spark dynamic allocation properties, such as \u003ccode\u003espark.dynamicAllocation.minExecutors\u003c/code\u003e and \u003ccode\u003espark.dynamicAllocation.maxExecutors\u003c/code\u003e, can be configured to control autoscaling behavior when submitting a batch workload.\u003c/p\u003e\n"],["\u003cp\u003eSetting \u003ccode\u003espark.reducer.fetchMigratedShuffle.enabled\u003c/code\u003e to \u003ccode\u003etrue\u003c/code\u003e mitigates \u003ccode\u003eExecutorDeadException\u003c/code\u003e and \u003ccode\u003eFetchFailedException\u003c/code\u003e errors by allowing reducers to refetch shuffle output locations after an executor is decommissioned.\u003c/p\u003e\n"]]],[],null,["# Serverless for Apache Spark autoscaling\n\nThis document provides information about Google Cloud Serverless for Apache Spark autoscaling.\nWhen you submit your Spark workload, Serverless for Apache Spark\ncan dynamically scale workload resources, such as the number of executors,\nto run your workload efficiently. Serverless for Apache Spark autoscaling is the\ndefault behavior, and uses\n[Spark dynamic resource allocation](https://spark.apache.org/docs/latest/job-scheduling.html#dynamic-resource-allocation)\nto determine whether, how, and when to scale your workload.\n\nServerless for Apache Spark autoscaling V2\n------------------------------------------\n\nServerless for Apache Spark autoscaling version 2 (V2) adds features and improvements\nto default version 1 (V1) to help you manage Serverless for Apache Spark workloads, improve\nworkload performance, and save costs:\n\n- **Asynchronous node downscaling**: Autoscaling V2 replaces V1's synchronous downscaling with asynchronous downscaling. Using asynchronous downscaling, Serverless for Apache Spark downscales workload resources without waiting for all nodes to finish shuffle migration. This means that long-tail nodes that scale down slowly won't block upscaling.\n- **Intelligent scaling down node selection**: Autoscaling V2 replaces V1's random node selection with an intelligent algorithm that identifies the best nodes to scale down first. This algorithm considers factors such as the node's shuffle data size and idle time.\n- **Configurable Spark grace decommission and shuffle migration behavior**: Autoscaling V2 lets you use standard Spark properties to configure Spark graceful decommissioning and shuffle migration. This feature can help you maintain migration compatibility with your customized Spark properties.\n\n| **Note:** Set the `spark.dataproc.scaling.version=2` property to enable Serverless for Apache Spark autoscaling V2 when you [submit a Spark batch workload](/dataproc-serverless/docs/quickstarts/spark-batch#submit_a_spark_batch_workload).\n\n### Serverless for Apache Spark autoscaling features\n\nSpark dynamic allocation properties\n-----------------------------------\n\nThe following table lists\n[Spark Dynamic Allocation](https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation)\nproperties that you can set when you submit a batch workload to control autoscaling (see\n[how to set Spark properties](/dataproc-serverless/docs/concepts/properties)).\n| **Note:** Also see [Spark properties](/dataproc-serverless/docs/concepts/properties), which describes additional properties that you can set when you submit a Serverless for Apache Spark Spark batch workload.\n\nSpark dynamic allocation metrics\n--------------------------------\n\nSpark batch workloads generate the following metrics related to Spark dynamic\nresource allocation (for additional information on Spark metrics, see\n[Monitoring and Instrumentation](https://spark.apache.org/docs/latest/monitoring.html)).\n| **Note:** See [Spark metrics](/dataproc-serverless/docs/concepts/metrics), which describes properties you can set to control the collection of Spark metrics.\n\nSpark dynamic allocation issues and solutions\n---------------------------------------------\n\n- **FetchFailedException caused by ExecutorDeadException**\n\n Cause: When Spark dynamic allocation scales down an executor, the shuffle file is migrated to\n live executors. However, since the Spark reducer task on an executor fetches shuffle\n output from the location set by the Spark driver when the reducer task started, if\n a shuffle file is migrated, the reducer can continue to attempt to\n fetch shuffle output from a decommissioned executor, causing `ExecutorDeadException`\n and `FetchFailedException` errors.\n\n Solution: Enable shuffle location refetching by setting\n the `spark.reducer.fetchMigratedShuffle.enabled` to `true` when you run your\n Serverless for Apache Spark batch workload (see\n [Set Spark batch workload properties](/dataproc-serverless/docs/concepts/properties#set_spark_batch_workload_properties)).\n When this property is enabled, the reducer task refetches the shuffle output\n location from the driver after a fetch from a decommissioned executor fails."]]