Topik ini menjelaskan cara mengonfigurasi parameter untuk pekerjaan Spark dari Lindorm Distributed Processing System (LDPS).
Konfigurasikan parameter untuk pekerjaan Spark
LDPS memungkinkan Anda mengonfigurasi parameter umum untuk pekerjaan Spark, termasuk parameter terkait sumber daya, eksekusi, dan pemantauan.
Parameter terbatas
Parameter spark.master dan spark.submit.deployMode adalah parameter sistem dan tidak dapat dikustomisasi.
Parameter | Deskripsi |
spark.master | Titik akhir sistem manajemen kluster. |
spark.submit.deployMode | Mode di mana driver Spark diterapkan. |
Parameter sumber daya
LDPS menyediakan layanan berdasarkan kolam sumber daya elastis. Secara default, jumlah maksimum sumber daya yang dapat Anda konfigurasi tidak dibatasi. Sumber daya ini ditagih berdasarkan skema bayar sesuai penggunaan. Untuk informasi lebih lanjut tentang cara mengubah jumlah maksimum sumber daya yang dapat Anda konfigurasi, lihat Upgrade/Downgrade Sumber Daya Compute Engine.
Anda dapat mengonfigurasi parameter sumber daya untuk setiap pekerjaan yang dikirimkan ke LDPS, seperti pekerjaan JDBC, JAR, atau Python. Parameter sumber daya mencakup parameter spesifikasi dan kapasitas.
Parameter spesifikasi
Parameter spesifikasi dasar
Parameter | Deskripsi | Nilai default |
spark.driver.memory | Ukuran memori heap driver. Unit: MB. | 8192M |
spark.driver.memoryOverhead | Ukuran memori off-heap driver. Unit: MB. | 8192M |
spark.kubernetes.driver.disk.size | Ukuran disk lokal driver. Unit: GB. | 50 |
spark.executor.cores | Jumlah core CPU dari satu node executor. | 4 |
spark.executor.memory | Ukuran memori heap dari satu executor. Unit: MB. | 8192M |
spark.executor.memoryOverhead | Ukuran memori off-heap dari satu executor. Unit: MB. | 8192M |
spark.kubernetes.executor.disk.size | Ukuran disk lokal dari satu executor. Unit: GB. | 50 |
Parameter spesifikasi lanjutan
Parameter | Deskripsi | Nilai default |
spark.{driver/executor}.resourceTag | Kumpulan spesifikasi sumber daya. Nilai yang valid:
| Tidak ada |
spark.kubernetes.{driver/executor}.ecsModelPreference | Model node komputasi. Parameter ini dapat dikonfigurasi bersama dengan parameter LDPS mengajukan permohonan model berdasarkan urutan spesifikasi model. Jika semua model yang ditentukan habis stoknya, LDPS secara acak mengajukan permohonan untuk model yang tersedia berdasarkan spesifikasi sumber daya yang ditentukan. | Tidak ada |
spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs | Spesifikasi dan model GPU. Untuk informasi lebih lanjut, lihat Tentukan tipe instans ECS untuk membuat pod. | ecs.gn7i-c8g1.2xlarge |
spark.{driver/executor}.resource.gpu.vendor | Produsen GPU. Catatan Nilai parameter ini harus sesuai dengan spesifikasi GPU yang ditentukan. | nvidia.com |
spark.{driver/executor}.resource.gpu.amount | Jumlah GPU. Catatan Setel parameter ini ke 1. | 1 |
spark.{driver/executor}.resource.gpu.discoveryScript | Lokasi file skrip. Catatan File skrip yang ditentukan oleh parameter ini digunakan untuk menanyakan dan mengasosiasikan sumber daya GPU saat Anda memulai driver atau executor Spark. Atur parameter ini ke | /opt/spark/examples/src/main/scripts/getGpusResources.sh |
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs | Spesifikasi instance executor. Perluas disk executor untuk memastikan kapasitas yang cukup. Spesifikasi berikut didukung:
Catatan | Tidak ada |
Parameter kapasitas
Parameter | Deskripsi | Nilai default |
spark.executor.instances | Jumlah executor yang diajukan untuk pekerjaan. | 2 |
spark.dynamicAllocation.enabled | Menentukan apakah alokasi sumber daya dinamis diaktifkan. Nilai valid:
Setelah alokasi sumber daya dinamis diaktifkan, LDPS mengajukan dan melepaskan executor berdasarkan beban kerja real-time pekerjaan. | true |
spark.dynamicAllocation.minExecutors | Jumlah minimum executor saat alokasi sumber daya dinamis diaktifkan. | 0 |
spark.dynamicAllocation.maxExecutors | Jumlah maksimum executor saat alokasi sumber daya dinamis diaktifkan. Catatan Jumlah maksimum executor sama dengan jumlah tugas konkuren yang ditentukan. | Tak Terbatas |
spark.dynamicAllocation.executorIdleTimeout | Periode idle maksimum untuk executor saat alokasi sumber daya dinamis diaktifkan. Jika sebuah executor idle selama periode waktu lebih lama dari nilai yang ditentukan, executor dilepaskan. Unit: detik. | 600s |
Parameter eksekusi
Parameter | Deskripsi | Nilai default |
spark.speculation | Menentukan apakah eksekusi spekulatif diaktifkan. Nilai valid:
Jika eksekusi tugas memerlukan waktu yang lama, driver menyerahkan ulang tugas untuk menghindari ekor panjang. Catatan Ekor panjang menunjukkan bahwa periode eksekusi beberapa tugas jauh lebih lama daripada tugas lainnya. | true |
spark.task.maxFailures | Jumlah kegagalan maksimum yang diizinkan untuk sebuah tugas. Jika jumlah kegagalan tugas melebihi nilai ini, pekerjaan tempat tugas tersebut gagal. | 4 |
spark.dfsLog.executor.enabled | Menentukan apakah log executor disimpan ke LindormDFS. Nilai valid:
Jika pekerjaan di LDPS berskala besar, Anda dapat menyetel parameter ini ke false untuk mencegah beban DFS berlebih yang disebabkan oleh aliran log. | true |
spark.jars | Path paket JAR yang diperlukan saat Anda mengirimkan tugas. Nilai parameter ini bisa berupa path di OSS atau HDFS. Jika Anda menyetel parameter ini ke path OSS, Anda juga harus mengonfigurasi parameterberikut:
Penting Jika Anda menggunakan JDBC untuk terhubung ke LDFS, parameter ini hanya dapat disetel ke path HDFS. | Tidak ada |
spark.hadoop.fs.oss.endpoint | Titik akhir OSS. Untuk informasi lebih lanjut tentang cara memperoleh titik akhir, lihat Wilayah dan titik akhir. | Tidak ada |
spark.hadoop.fs.oss.accessKeyId | ID AccessKey dari akun Alibaba Cloud Anda atau pengguna RAM dari akun Alibaba Cloud Anda. Untuk informasi lebih lanjut tentang cara memperoleh ID AccessKey dan Rahasia AccessKey, lihat Memperoleh pasangan AccessKey. | Tidak ada |
spark.hadoop.fs.oss.accessKeySecret | Rahasia AccessKey dari akun Alibaba Cloud Anda atau pengguna RAM dari akun Alibaba Cloud Anda. Untuk informasi lebih lanjut tentang cara memperoleh ID AccessKey dan Rahasia AccessKey, lihat Memperoleh pasangan AccessKey. | Tidak ada |
spark.hadoop.fs.oss.impl | Kelas yang digunakan untuk mengakses OSS. Atur parameter ini ke | Tidak ada |
spark.default.parallelism | Konkurensi default untuk tugas non-SQL, termasuk konkurensi sumber data dan konkurensi shuffle. | Tidak ada |
spark.sql.shuffle.partitions | Konkurensi shuffle default untuk tugas SQL. | 200 |
Parameter pemantauan
LDFS memungkinkan Anda menggunakan parameter kustom untuk memantau status instance. Anda dapat mengonfigurasi parameter ini untuk mencatat status driver dan executor dalam log pekerjaan.
Parameter | Deskripsi | Nilai default |
spark.monitor.cmd | Grup perintah untuk pemantauan pekerjaan. Pisahkan beberapa perintah dengan titik koma (;). Perintah yang ditentukan oleh parameter ini dijalankan secara berurutan pada interval reguler. Hasil eksekusi perintah dicatat dalam log pekerjaan. Contoh perintah pemantauan:
Contoh pernyataan:
Penting Jika Anda menggunakan Beeline atau JDBC untuk mengirimkan pekerjaan, parameter ini tidak dapat dikonfigurasi. | Tidak ada |
spark.monitor.interval | Interval waktu perintah dalam grup dijalankan. Unit: detik. Perintah yang ditentukan oleh parameter spark.monitor.cmd dijalankan pada interval yang ditentukan oleh parameter ini. | 60 |
spark.monitor.timeout | Periode timeout untuk perintah pemantauan. Unit: detik. Jika waktu eksekusi perintah pemantauan dalam grup perintah yang ditentukan oleh parameter spark.monitor.cmd melebihi periode timeout yang ditentukan, perintah dilewati dan perintah berikutnya dijalankan. Dengan cara ini, informasi pemantauan dapat dicatat dalam log tanpa terblokir. | 2 |
Parameter log
Parameter | Deskripsi | Nilai default |
spark.log.level | Mengatur tingkat output untuk log pekerjaan. Tingkat yang tersedia meliputi:
| INFO |
Parameter terkait Spark open source
Untuk informasi lebih lanjut tentang parameter terkait Spark open source, lihat Konfigurasi Spark.
Metode konfigurasi
Saat mengirimkan pekerjaan ke LDPS, Anda dapat mengonfigurasi parameter sumber daya khusus. Metode konfigurasi bervariasi tergantung pada cara pengiriman pekerjaan.
Beeline
Anda dapat menentukan metode konfigurasi dengan memodifikasi file konfigurasi conf/beeline.conf dalam paket Spark tempat alat baris perintah Beeline berada. Untuk informasi lebih lanjut, lihat Memulai.
Berikut adalah contoh isi file konfigurasi:
# Titik akhir Lindorm Compute Engine, misalnya jdbc:hive2://123.456.XX.XX:10009/;?token=bb8a15-jaksdj-sdfjsd-ak****
endpoint=jdbc:hive2://ld-bp13ez23egd123****-proxy-ldps-pub.lindorm.aliyuncs.com:10009/;?token=jfjwi2453-fe39-cmkfe-afc9-01eek2j5****
# Nama pengguna untuk koneksi, secara default root.
user=root
# Kata sandi untuk koneksi, secara default root.
password=root
# Apakah akan berbagi sumber daya Spark antar sesi yang berbeda, secara default true.
shareResource=false
# Konfigurasi Spark normal
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=3JDBC
Anda dapat mengonfigurasi parameter menggunakan string koneksi JDBC. Untuk informasi lebih lanjut tentang URL JDBC, lihat Gunakan JDBC dalam pengembangan aplikasi.
Sebagai contoh, Anda dapat menggunakan string koneksi JDBC untuk menyetel jumlah partisi shuffle Spark default menjadi 2 dan ruang memori yang digunakan oleh executor menjadi 8 GB.
jdbc:hive2://${host}:${port}/;?token=${token};spark.executor.memory=8g;spark.sql.shuffle.partitions=2JAR
Anda dapat mengonfigurasi parameter untuk pekerjaan Java berdasarkan template konten pekerjaan saat mengirimkan pekerjaan Java di konsol Lindorm. Untuk informasi lebih lanjut, lihat Kelola pekerjaan di konsol Lindorm.
Saat menggunakan DMS untuk mengirimkan pekerjaan Java, Anda dapat mengonfigurasi parameter kustom untuk pekerjaan di bagian konfigurasi pekerjaan halaman node pekerjaan. Untuk informasi lebih lanjut, lihat Gunakan DMS untuk mengelola pekerjaan.
Python
Anda dapat mengonfigurasi parameter untuk pekerjaan Python berdasarkan templat konten pekerjaan saat mengirimkan pekerjaan Python di konsol Lindorm. Untuk informasi lebih lanjut, lihat Kelola pekerjaan di konsol Lindorm.
Saat menggunakan DMS untuk mengirimkan pekerjaan Python, Anda dapat mengonfigurasi parameter kustom untuk pekerjaan di bagian konfigurasi pekerjaan halaman node pekerjaan. Untuk informasi lebih lanjut, lihat Gunakan DMS untuk mengelola pekerjaan.