Parameter konfigurasi Spark di AnalyticDB for MySQL mirip dengan Apache Spark. Topik ini menjelaskan parameter konfigurasi AnalyticDB for MySQL yang berbeda dari Apache Spark.
Catatan penggunaan
Parameter konfigurasi aplikasi Spark digunakan untuk mengonfigurasi dan menyesuaikan perilaku serta kinerja aplikasi Spark. Format parameter ini bervariasi tergantung pada alat pengembangan Spark yang Anda gunakan.
Development tool | Format parameter konfigurasi | Contoh Konfigurasi |
SQL editor | set key=value; |
|
Spark Jar editor | "key": "value" |
|
Notebook editor | "key": "value" |
|
antarmuka baris perintah spark-submit | key=value |
|
Tentukan sumber daya Driver dan Executor
Parameter | Wajib | Nilai default | Deskripsi | Parameter yang sesuai di Apache Spark |
spark.adb.acuPerApp | Tidak | Tidak ada | Jumlah ACU yang digunakan oleh satu pekerjaan Spark. Nilai valid: [2, Sumber daya komputasi maksimum dari kelompok sumber daya pekerjaan]. Setelah Anda mengonfigurasi parameter ini, sistem secara otomatis menghitung dan mengonfigurasi spesifikasi Spark Driver, spesifikasi Spark Executor, serta jumlah node Spark Executor. | N/A |
spark.driver.resourceSpec | Ya | medium | Spesifikasi sumber daya Spark driver. Setiap tipe memiliki spesifikasi yang berbeda. Untuk informasi lebih lanjut, lihat kolom Type pada tabel spesifikasi sumber daya Spark di topik ini. Penting Jika Anda mengirimkan aplikasi Spark, Anda dapat menggunakan parameter Apache Spark dan mengonfigurasi parameter berdasarkan nilai core dan memori yang dijelaskan dalam tabel spesifikasi sumber daya Spark di topik ini. Contoh: | spark.driver.cores dan spark.driver.memory |
spark.executor.resourceSpec | Ya | medium | Spesifikasi sumber daya setiap Spark executor. Setiap tipe memiliki spesifikasi yang berbeda. Untuk informasi lebih lanjut, lihat kolom Type pada tabel spesifikasi sumber daya Spark di topik ini. Penting Jika Anda mengirimkan aplikasi Spark, Anda dapat menggunakan parameter Apache Spark dan mengonfigurasi parameter berdasarkan nilai core dan memori yang dijelaskan dalam tabel spesifikasi sumber daya Spark di topik ini. Contoh: | spark.executor.cores dan spark.executor.memory |
spark.executor.instances | Tidak | Sumber daya komputasi maksimum kelompok sumber daya pekerjaan/5 | Jumlah Spark executor yang dimulai. | spark.executor.instances |
spark.adb.driverDiskSize | Tidak | Tidak ada | Ukuran penyimpanan disk tambahan yang dipasang pada Spark driver untuk memenuhi kebutuhan penyimpanan disk besar. Secara default, penyimpanan disk tambahan dipasang pada direktori /user_data_dir. Unit: GiB. Nilai valid: (0,100]. Contoh: spark.adb.driverDiskSize=50Gi. Pada contoh ini, penyimpanan disk tambahan yang dipasang pada Spark driver diatur menjadi 50 GiB. | N/A |
spark.adb.executorDiskSize | Tidak | Tidak ada | Ukuran penyimpanan disk tambahan yang dipasang pada Spark executor untuk memenuhi kebutuhan operasi shuffle. Secara default, penyimpanan disk tambahan dipasang pada direktori /shuffle_volume. Unit: GiB. Nilai valid: (0,100]. Contoh: spark.adb.executorDiskSize=50Gi. Pada contoh ini, penyimpanan disk tambahan yang dipasang pada Spark executor diatur menjadi 50 GiB. | N/A |
Spesifikasi sumber daya Spark
Anda dapat menggunakan sumber daya reserved atau sumber daya elastis untuk menjalankan pekerjaan Spark. Jika Anda menggunakan sumber daya elastis on-demand dari kelompok sumber daya pekerjaan untuk menjalankan pekerjaan Spark, sistem menghitung jumlah AnalyticDB compute unit (ACU) yang digunakan berdasarkan spesifikasi sumber daya Spark dan rasio CPU-memori menggunakan rumus berikut:
Rasio CPU-memori 1:2: Jumlah ACU yang digunakan = Jumlah core CPU × 0,8.
Rasio CPU-memori 1:4: Jumlah ACU yang digunakan = Jumlah core CPU × 1.
Rasio CPU-memori 1:8: Jumlah ACU yang digunakan = Jumlah core CPU × 1,5.
Untuk informasi harga sumber daya elastis on-demand, lihat Harga Edisi Data Lakehouse.
Tabel 1. Spesifikasi sumber daya Spark
Type | Spesifikasi | ACU yang Digunakan | ||
CPU cores | Memory (GB) | Penyimpanan disk1 (GB) | ||
c.small | 1 | 2 | 20 | 0,8 |
small | 1 | 4 | 20 | 1 |
m.small | 1 | 8 | 20 | 1,5 |
c.medium | 2 | 4 | 20 | 1,6 |
medium | 2 | 8 | 20 | 2 |
m.medium | 2 | 16 | 20 | 3 |
c.large | 4 | 8 | 20 | 3,2 |
large | 4 | 16 | 20 | 4 |
m.large | 4 | 32 | 20 | 6 |
c.xlarge | 8 | 16 | 20 | 6,4 |
xlarge | 8 | 32 | 20 | 8 |
m.xlarge | 8 | 64 | 20 | 12 |
c.2xlarge | 16 | 32 | 20 | 12,8 |
2xlarge | 16 | 64 | 20 | 16 |
m.2xlarge | 16 | 128 | 20 | 24 |
m.4xlarge | 32 | 256 | 20 | 48 |
m.8xlarge | 64 | 512 | 20 | 96 |
1Penyimpanan disk: Sistem diperkirakan akan menggunakan sekitar 1% dari penyimpanan disk. Penyimpanan disk yang tersedia sebenarnya mungkin kurang dari 20 GB.
Contoh
Alokasikan 32 Executor untuk pekerjaan Spark, dengan setiap Executor memiliki spesifikasi medium (2 core 8 GB), dan setiap Driver memiliki spesifikasi small (1 core 4 GB). Dalam kasus ini, seluruh pekerjaan dapat mengalokasikan total 65 ACU sumber daya komputasi.
{
"spark.driver.resourceSpec":"small",
"spark.executor.resourceSpec":"medium",
"spark.executor.instances":"32",
"spark.adb.executorDiskSize":"100Gi"
}Tentukan prioritas untuk pekerjaan Spark
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.priority | Tidak | NORMAL | Prioritas pekerjaan Spark. Jika sumber daya tidak mencukupi untuk menjalankan semua pekerjaan Spark yang diajukan, pekerjaan dalam antrian yang memiliki prioritas lebih tinggi akan dijalankan terlebih dahulu. Nilai valid:
Penting Kami merekomendasikan agar Anda mengatur parameter ini ke HIGH untuk pekerjaan Spark streaming (pekerjaan stream jangka panjang). |
Akses metadata
Parameter | Wajib | Nilai default | Deskripsi |
spark.sql.catalogImplementation | Tidak |
| Jenis metadata yang akan diakses. Nilai valid:
|
spark.sql.hive.metastore.version | Tidak |
| Versi layanan metastore. Nilai valid:
Catatan
|
Contoh
Konfigurasikan pengaturan berikut untuk mengakses metadata di AnalyticDB for MySQL:
spark.sql.hive.metastore.version=adb;Konfigurasikan pengaturan berikut untuk mengakses metadata di Hive Metastore bawaan Apache Spark:
spark.sql.catalogImplementation=hive; spark.sql.hive.metastore.version=2.1.3;Konfigurasikan pengaturan berikut untuk mengakses metadata di direktori sementara:
spark.sql.catalogImplementation=in-memory;
Konfigurasi Spark UI
Parameter | Wajib | Nilai default | Deskripsi |
spark.app.log.rootPath | Tidak |
| Direktori tempat log pekerjaan Spark AnalyticDB for MySQL dan data keluaran sistem operasi Linux disimpan. Secara default, folder bernama ID aplikasi Spark berisi konten berikut:
|
spark.adb.event.logUploadDuration | Tidak | false | Menentukan apakah akan mencatat durasi unggah log event. |
spark.adb.buffer.maxNumEvents | Tidak | 1000 | Jumlah maksimum event yang di-cache oleh driver. |
spark.adb.payload.maxNumEvents | Tidak | 10000 | Jumlah maksimum event yang dapat diunggah ke Object Storage Service (OSS) sekaligus. |
spark.adb.event.pollingIntervalSecs | Tidak | 0,5 | Interval antara dua unggahan event ke OSS. Unit: detik. Misalnya, nilai 0,5 menunjukkan bahwa event diunggah setiap 0,5 detik. |
spark.adb.event.maxPollingIntervalSecs | Tidak | 60 | Interval retry maksimum ketika unggahan event ke OSS gagal. Unit: detik. Interval antara unggahan yang gagal dan retry unggahan harus berada dalam rentang nilai |
spark.adb.event.maxWaitOnEndSecs | Tidak | 10 | Waktu tunggu maksimum untuk mengunggah event ke OSS. Unit: detik. Waktu tunggu maksimum adalah interval antara awal dan penyelesaian unggahan. Jika unggahan tidak selesai dalam waktu tunggu maksimum, unggahan akan diulang. |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | Tidak | 1 | Waktu tunggu yang diperlukan untuk mengulang unggahan yang gagal diselesaikan dalam nilai |
spark.adb.eventLog.rolling.maxFileSize | Tidak | 209715200 | Ukuran file maksimum log event di OSS. Unit: byte. Log event disimpan di OSS dalam bentuk beberapa file, seperti Eventlog.0 dan Eventlog.1. Anda dapat menentukan ukuran file tersebut. |
Berikan izin kepada Pengguna RAM
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.roleArn | Tidak | N/A | Nama Sumber Daya Alibaba Cloud (ARN) dari peran Resource Access Management (RAM) yang ingin Anda sambungkan ke Pengguna RAM di Konsol RAM untuk memberikan izin kepada Pengguna RAM agar dapat mengirimkan aplikasi Spark. Untuk informasi lebih lanjut, lihat Ikhtisar peran RAM. Jika Anda mengirimkan aplikasi Spark sebagai Pengguna RAM, Anda harus menentukan parameter ini. Jika Anda mengirimkan aplikasi Spark dengan Akun Alibaba Cloud, Anda tidak perlu menentukan parameter ini. Catatan Jika Anda telah memberikan izin kepada Pengguna RAM di Konsol RAM, Anda tidak perlu menentukan parameter ini. Untuk informasi lebih lanjut, lihat Otorisasi akun. |
Aktifkan konektor sumber data bawaan
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.connectors | Tidak | N/A | Nama konektor bawaan AnalyticDB for MySQL Spark yang ingin Anda aktifkan. Pisahkan beberapa nama dengan koma (,). Nilai valid: oss, hudi, delta, adb, odps, external_hive, jindo, dan default. |
spark.hadoop.io.compression.codec.snappy.native | Tidak | false | Menentukan apakah file Snappy dalam format Snappy standar. Secara default, Hadoop mengenali file Snappy yang diedit di Hadoop. Jika Anda mengatur parameter ini ke true, pustaka Snappy standar digunakan untuk dekompresi. Jika Anda mengatur parameter ini ke false, pustaka Snappy default Hadoop digunakan untuk dekompresi. |
Aktifkan akses VPC dan akses sumber data
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.eni.enabled | Tidak | false | Menentukan apakah akan mengaktifkan Elastic Network Interface (ENI). Jika Anda menggunakan tabel eksternal untuk mengakses sumber data eksternal lainnya, Anda harus mengaktifkan ENI. Nilai valid:
|
spark.adb.eni.vswitchId | Tidak | N/A | ID vSwitch yang terkait dengan ENI. Jika Anda menghubungkan ke AnalyticDB for MySQL dari instans Elastic Compute Service (ECS) melalui virtual private cloud (VPC), Anda harus menentukan ID vSwitch untuk VPC tersebut. Catatan Jika Anda telah mengaktifkan akses VPC, Anda harus mengatur parameter spark.adb.eni.enabled ke true. |
spark.adb.eni.securityGroupId | Tidak | N/A | ID grup keamanan yang terkait dengan ENI. Jika Anda menghubungkan ke AnalyticDB for MySQL dari instans ECS melalui VPC, Anda harus menentukan ID grup keamanan. Catatan Jika Anda telah mengaktifkan akses VPC, Anda harus mengatur parameter spark.adb.eni.enabled ke true. |
spark.adb.eni.extraHosts | Tidak | N/A | Pemetaan antara alamat IP dan hostname. Parameter ini memungkinkan Spark menyelesaikan hostname sumber data. Jika Anda ingin mengakses sumber data Hive yang dikelola sendiri, Anda harus menentukan parameter ini. Catatan
|
spark.adb.eni.adbHostAlias.enabled | Tidak | false | Menentukan apakah akan secara otomatis menulis informasi resolusi nama domain yang diperlukan oleh AnalyticDB for MySQL ke tabel pemetaan nama domain dan alamat IP. Nilai valid:
Jika Anda menggunakan ENI untuk membaca atau menulis data dari EMR Hive, Anda harus mengatur parameter ini ke true. |
Konfigurasi retry aplikasi
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.maxAttempts | Tidak | 1 | Jumlah maksimum upaya yang diizinkan untuk menjalankan aplikasi. Nilai default adalah 1, yang berarti tidak ada upaya retry. Jika Anda mengatur parameter ini ke 3 untuk aplikasi Spark, sistem akan mencoba menjalankan aplikasi hingga tiga kali dalam jendela geser. |
spark.adb.attemptFailuresValidityInterval | Tidak | Integer.MAX | Durasi jendela geser di mana sistem mencoba menjalankan ulang aplikasi. Unit: detik. Misalnya, jika Anda mengatur parameter ini ke 6000 untuk aplikasi Spark, sistem menghitung jumlah upaya dalam 6.000 detik terakhir setelah kegagalan. Jika jumlah upaya kurang dari nilai parameter maxAttempts, sistem akan mencoba menjalankan ulang aplikasi. |
Penghentian pekerjaan otomatis saat timeout penjadwalan (Scheduling Watchdog)
Ketika pod Executor pekerjaan tetap dalam status Pending untuk periode yang lama karena sumber daya dasar tidak mencukupi—seperti kehabisan inventaris ECI, kuota sumber daya terlampaui, atau afinitas node tidak terpenuhi—pekerjaan terus menunggu, yang menyia-nyiakan sumber daya Driver dan menghalangi penjadwalan berikutnya. Setelah fitur ini diaktifkan, ketika rasio Executor yang tidak dapat dijadwalkan dan waktu tunggu mencapai ambang batas yang ditentukan, sistem secara otomatis menandai pekerjaan sebagai gagal dan melepaskan sumber daya untuk mencapai perilaku fail-fast.
Skenario
Fitur ini cocok untuk skenario di mana Anda menjalankan banyak pekerjaan Spark di kluster bersama dan ingin pekerjaan gagal dengan cepat daripada menunggu tanpa batas ketika sumber daya tidak mencukupi. Skenario khas meliputi:
Sumber daya ECI tidak mencukupi: Saat Anda menggunakan Elastic Container Instance (ECI) untuk menjalankan Executor, inventaris tidak mencukupi untuk tipe instans dasar menyebabkan pod tetap dalam status Pending untuk waktu yang lama.
Kuota sumber daya terlampaui: Kuota CPU atau memori namespace atau kelompok sumber daya habis, dan Executor baru tidak dapat dijadwalkan.
Retry cepat untuk pekerjaan batch: Anda ingin pekerjaan gagal dengan cepat ketika sumber daya tidak tersedia, dan membiarkan sistem penjadwalan tingkat atas (seperti Airflow) menentukan strategi retry.
Metode konfigurasi
Saat mengirimkan pekerjaan Spark, konfigurasikan parameter berikut untuk mengaktifkan dan menyesuaikan perilaku Watchdog.
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.terminateOnPending.enabled | Wajib saat fitur diaktifkan | false | Menentukan apakah akan mengaktifkan penghentian pekerjaan otomatis saat timeout penjadwalan untuk pekerjaan. Nilai valid:
Fitur ini dinonaktifkan secara default. Fitur ini dan parameter lainnya hanya berlaku setelah Anda mengatur parameter ini ke true. |
spark.adb.terminateOnPending.timeoutSec | Tidak | 610 | Waktu toleransi selama pod Executor tetap dalam status Pending. Unit: detik. Penghitung waktu dimulai ketika pod Executor pertama kali terdeteksi tidak dapat dijadwalkan. Ketika waktu tunggu melebihi nilai ini dan kondisi spark.adb.terminateOnPending.executorRatio juga terpenuhi, pekerjaan dihentikan. Nilai yang direkomendasikan: 610 hingga 900. |
spark.adb.terminateOnPending.executorRatio | Tidak | 0,5 | Ambang batas rasio Executor yang tidak dapat dijadwalkan yang memicu penghentian. Rentang valid: (0, 1,0]. Rasio dihitung sebagai jumlah Executor yang tidak dapat dijadwalkan dibagi dengan jumlah total Executor yang diharapkan. Ketika rasio mencapai nilai ini dan waktu Pending melebihi spark.adb.terminateOnPending.timeoutSec, pekerjaan dihentikan. Nilai yang lebih kecil membuat pemicuan lebih sensitif, dan nilai yang lebih besar membuat pemicuan lebih longgar:
Jumlah total Executor yang diharapkan ditentukan berdasarkan prioritas berikut:
|
Penghentian hanya dipicu ketika kedua kondisi spark.adb.terminateOnPending.executorRatio dan spark.adb.terminateOnPending.timeoutSec terpenuhi. Penghentian tidak dipicu jika hanya waktu tunggu yang terlampaui tetapi rasio tidak tercapai, atau jika hanya rasio yang tercapai tetapi waktu tunggu tidak mencukupi.
Contoh konfigurasi: aktifkan penghentian pekerjaan otomatis saat timeout penjadwalan untuk pekerjaan, dan hentikan pekerjaan ketika separuh Executor tetap tidak dapat dijadwalkan selama lebih dari 300 detik.
{
"spark.adb.terminateOnPending.enabled":"true",
"spark.adb.terminateOnPending.timeoutSec":"300",
"spark.adb.terminateOnPending.executorRatio":"0.5"
}Perilaku pekerjaan setelah penghentian
Setelah penghentian dipicu, pekerjaan berperilaku sebagai berikut:
Status pekerjaan: SparkApplication pertama-tama masuk ke
FailingStatedan kemudian berubah menjadiFailedState.Pesan error:
status.appState.errorMessageberisi informasi diagnostik kesalahan terstruktur.Pod Driver: Pod Driver dihapus secara proaktif guna melepaskan sumber daya.
Contoh berikut menunjukkan pesan error:
[ResourceQuotaExceeded] executors unschedulable: 5/10 (50%) for 5m12s; threshold ratio≥50%, age≥5m0s
denom=10 (spec.executor.instances), distinct reasons=1, oldest pod=my-job-exec-3 (pending since 2026-06-01T10:16:34Z)
scheduler reason: Unschedulable
scheduler message: 0/1279 nodes are available: quota not enough, quotaName: amv-xKonten dalam tanda kurung siku di awal pesan error menunjukkan kategori kesalahan yang diklasifikasikan secara otomatis oleh sistem. Tabel berikut menjelaskan arti setiap kategori dan penanganan yang direkomendasikan.
Kategori kesalahan | Arti | Penanganan yang direkomendasikan |
| Pod ECI melebihi durasi Pending maksimum. | Periksa inventaris tipe instans ECI, atau beralih ke tipe instans ECI lainnya. |
| Kuota sumber daya tidak mencukupi. | Hubungi administrator untuk menambah kuota, atau kurangi konkurensi pekerjaan. |
| CPU atau memori kluster tidak mencukupi. | Tunggu hingga sumber daya dilepaskan, atau perluas kluster. |
Watchdog hanya menandai pekerjaan sebagai gagal. Apakah pekerjaan diulang setelah itu dikendalikan oleh restartPolicy pekerjaan, yang konsisten dengan perilaku ketika pekerjaan gagal secara normal. Untuk informasi lebih lanjut tentang retry aplikasi, lihat bagian Konfigurasi retry aplikasi di topik ini.
Tentukan lingkungan runtime untuk pekerjaan Spark
Tabel berikut menjelaskan parameter konfigurasi yang diperlukan saat Anda menggunakan teknologi lingkungan virtual untuk mengemas lingkungan Python dan mengirimkan pekerjaan Spark.
Parameter | Wajib | Nilai default | Deskripsi |
spark.pyspark.python | Tidak | N/A | Jalur interpreter Python di perangkat lokal Anda. |
Tentukan versi Spark
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.version | Tidak | 3.2 | Versi Spark. Nilai valid:
|
Mesin eksekusi vektorisasi berkinerja-tinggi
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.native.enabled | Tidak | false | Menentukan apakah akan mengaktifkan mesin eksekusi vektorisasi berkinerja-tinggi untuk menjalankan pekerjaan. Mesin ini dibangun ke dalam AnalyticDB for MySQL Spark dan sepenuhnya kompatibel dengan Spark open source. Anda dapat mengaktifkannya tanpa memodifikasi kode yang sudah ada. |
Akselerasi penyimpanan danau
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.lakecache.enabled | Tidak | false | Menentukan apakah akan mengaktifkan LakeCache (akselerasi penyimpanan lake). |
Parameter konfigurasi yang tidak didukung oleh AnalyticDB for MySQL
AnalyticDB for MySQL Spark tidak mendukung parameter konfigurasi Apache Spark berikut. Parameter ini tidak berlaku pada AnalyticDB for MySQL Spark.
Useless options(these options will be ignored):
--deploy-mode
--master
--packages, please use `--jars` instead
--exclude-packages
--proxy-user
--repositories
--keytab
--principal
--queue
--total-executor-cores
--driver-library-path
--driver-class-path
--supervise
-S,--silent
-i <filename>