AnalyticDB for MySQL menggunakan parameter konfigurasi Spark yang 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.
Tool pengembangan | 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 |
|
Menentukan resource 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 yang 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 resource untuk Spark driver. Setiap tipe memiliki spesifikasi yang berbeda. Untuk informasi lebih lanjut, lihat kolom Tipe pada tabel spesifikasi resource 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 resource Spark di topik ini. Contoh: | spark.driver.cores dan spark.driver.memory |
spark.executor.resourceSpec | Ya | medium | Spesifikasi resource untuk setiap Spark executor. Setiap tipe memiliki spesifikasi yang berbeda. Untuk informasi lebih lanjut, lihat kolom Tipe pada tabel spesifikasi resource 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 resource Spark di topik ini. Contoh: | spark.executor.cores dan spark.executor.memory |
spark.executor.instances | Tidak | Sumber daya komputasi maksimum dari kelompok sumber daya pekerjaan/5 | Jumlah Spark executor yang dijalankan. | 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 yang 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 yang 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 resource Spark
Anda dapat menggunakan resource reserved atau resource elastis untuk menjalankan pekerjaan Spark. Jika Anda menggunakan resource elastis on-demand dari kelompok sumber daya pekerjaan untuk menjalankan pekerjaan Spark, sistem menghitung jumlah AnalyticDB compute unit (ACU) yang digunakan berdasarkan spesifikasi resource 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 resource elastis on-demand, lihat Harga Edisi Data Lakehouse.
Tabel 1. Spesifikasi resource Spark
Tipe | Spesifikasi | ACU yang Digunakan | ||
Core CPU | Memori (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 |
1 Penyimpanan 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"
}Menentukan 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 dikirimkan, pekerjaan dalam antrian dengan prioritas lebih tinggi akan dijalankan terlebih dahulu. Nilai yang valid:
Penting Kami menyarankan Anda mengatur parameter ini ke HIGH untuk pekerjaan Spark streaming (pekerjaan stream berjalan lama). |
Mengakses metadata
Parameter | Wajib | Nilai default | Deskripsi |
spark.sql.catalogImplementation | Tidak |
| Jenis metadata yang akan diakses. Nilai yang valid:
|
spark.sql.hive.metastore.version | Tidak |
| Versi layanan metastore. Nilai yang 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;
Mengonfigurasi 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 durasi unggah log event dicatat. |
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. Satuan: detik. Misalnya, nilai 0,5 menunjukkan bahwa event diunggah setiap 0,5 detik. |
spark.adb.event.maxPollingIntervalSecs | Tidak | 60 | Interval percobaan ulang maksimum ketika unggahan event ke OSS gagal. Satuan: detik. Interval antara unggahan yang gagal dan percobaan ulang harus berada dalam rentang nilai |
spark.adb.event.maxWaitOnEndSecs | Tidak | 10 | Waktu tunggu maksimum untuk mengunggah event ke OSS. Satuan: detik. Waktu tunggu maksimum adalah interval antara awal dan penyelesaian unggahan. Jika unggahan tidak selesai dalam waktu tunggu maksimum, unggahan tersebut akan dicoba ulang. |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | Tidak | 1 | Waktu tunggu yang diperlukan untuk mencoba ulang unggahan yang gagal diselesaikan dalam nilai |
spark.adb.eventLog.rolling.maxFileSize | Tidak | 209715200 | Ukuran file maksimum log event di OSS. Satuan: byte. Log event disimpan di OSS dalam bentuk beberapa file, seperti Eventlog.0 dan Eventlog.1. Anda dapat menentukan ukuran file tersebut. |
Memberikan 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. |
Mengaktifkan 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 yang 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. |
Mengaktifkan akses VPC dan akses sumber data
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.eni.enabled | Tidak | false | Menentukan apakah Elastic Network Interface (ENI) diaktifkan. Jika Anda menggunakan tabel eksternal untuk mengakses sumber data eksternal lainnya, Anda harus mengaktifkan ENI. Nilai yang 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 informasi resolusi nama domain yang dibutuhkan oleh AnalyticDB for MySQL ditulis secara otomatis ke tabel pemetaan nama domain dan alamat IP. Nilai yang valid:
Jika Anda menggunakan ENI untuk membaca atau menulis data dari EMR Hive, Anda harus mengatur parameter ini ke true. |
Mengonfigurasi percobaan ulang aplikasi
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.maxAttempts | Tidak | 1 | Jumlah maksimum percobaan yang diizinkan untuk menjalankan aplikasi. Nilai default adalah 1, yang berarti tidak ada percobaan ulang. 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. Satuan: detik. Misalnya, jika Anda mengatur parameter ini ke 6000 untuk aplikasi Spark, sistem menghitung jumlah percobaan dalam 6.000 detik terakhir setelah kegagalan. Jika jumlah percobaan kurang dari nilai parameter maxAttempts, sistem akan mencoba menjalankan ulang aplikasi. |
Menentukan lingkungan runtime untuk pekerjaan Spark
Tabel berikut menjelaskan parameter konfigurasi yang diperlukan saat Anda menggunakan teknologi virtual environments 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. |
Menentukan versi Spark
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.version | Tidak | 3.2 | Versi Spark. Nilai yang valid:
|
Mesin eksekusi vektorisasi berkinerja-tinggi
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.native.enabled | Tidak | false | Menentukan apakah mesin eksekusi vektorisasi berkinerja-tinggi diaktifkan untuk menjalankan pekerjaan. Mesin ini tertanam di AnalyticDB for MySQL Spark dan sepenuhnya kompatibel dengan Spark open source. Anda dapat mengaktifkannya tanpa mengubah kode yang sudah ada. |
Akselerasi penyimpanan lake
Parameter | Wajib | Nilai default | Deskripsi |
spark.adb.lakecache.enabled | Tidak | false | Menentukan apakah LakeCache (akselerasi penyimpanan lake) diaktifkan. |
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>