Tool baris perintah spark-submit AnalyticDB for MySQL memungkinkan Anda mengirim dan mengelola aplikasi Spark JAR dari client. Topik ini menjelaskan cara menginstal tool tersebut, mengonfigurasinya, mengirim aplikasi Spark JAR, serta mengelola pekerjaan yang sedang berjalan.
Batasan
Tool spark-submit hanya mendukung aplikasi Spark JAR. Aplikasi Spark SQL tidak dapat dikirim.
Perintah pengiriman tidak diulang saat gagal karena pengiriman bukan operasi idempoten. Perintah yang tampak gagal akibat timeout jaringan mungkin sebenarnya telah berhasil. Untuk memverifikasi apakah pengiriman berhasil, gunakan
--listatau periksa konsol AnalyticDB for MySQL.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster AnalyticDB for MySQL edisi Data Lakehouse
Kelompok sumber daya pekerjaan. Untuk detailnya, lihat Buat dan kelola kelompok sumber daya.
Bucket Object Storage Service (OSS) di wilayah yang sama dengan kluster
Java Development Kit (JDK) 1.8 atau versi lebih baru yang telah diinstal pada mesin client
Instal spark-submit
Unduh paket instalasi.
wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gzEkstrak paket tersebut.
tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz
Konfigurasi spark-submit
Setelah mengekstrak paket, buka file adb-spark-toolkit-submit/conf/spark-defaults.conf. Skrip spark-submit membaca file ini secara otomatis, dan pengaturannya berlaku untuk semua aplikasi Spark.
vim adb-spark-toolkit-submit/conf/spark-defaults.confTabel berikut menjelaskan parameter konfigurasi.
| Parameter | Wajib | Deskripsi |
|---|---|---|
keyId | Ya | ID AccessKey dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) yang memiliki izin untuk mengakses AnalyticDB for MySQL. Untuk detailnya, lihat Akun dan izin. |
secretId | Ya | Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna RAM. Untuk detailnya, lihat Akun dan izin. |
regionId | Ya | ID wilayah kluster AnalyticDB for MySQL. |
clusterId | Ya | ID kluster AnalyticDB for MySQL. |
rgName | Ya | Nama kelompok sumber daya pekerjaan yang digunakan untuk menjalankan aplikasi Spark. |
ossKeyId | Tidak | ID AccessKey untuk akses OSS. Diperlukan ketika file JAR yang disimpan di lokal perlu diunggah ke OSS. Pengguna RAM harus memiliki izin AliyunOSSFullAccess. |
ossSecretId | Tidak | Rahasia AccessKey untuk akses OSS. Diperlukan bersama dengan ossKeyId. |
ossUploadPath | Tidak | Path OSS untuk mengunggah file JAR lokal. Diperlukan bersama dengan ossKeyId. |
conf | Tidak | Parameter konfigurasi Spark tambahan dalam format key:value. Pisahkan beberapa parameter dengan koma. Untuk daftar parameter yang tersedia, lihat Parameter konfigurasi aplikasi Spark. |
Kompatibilitas
Untuk menjaga kompatibilitas dengan Spark-Submit open source, Anda juga dapat mengatur parameter berikut dalam Spark Conf AnalyticDB for MySQL: keyId, secretId, regionId, clusterId, rgName, ossKeyId, dan ossUploadPath. Parameter-parameter ini bukan bagian dari konfigurasi Spark open source. Saat Anda mengonfigurasi parameter ini menggunakan format Conf, Anda harus menggunakan nama seperti yang ditunjukkan dalam kode berikut.
--conf spark.adb.access.key.id=<value>
--conf spark.adb.access.secret.id=<value>
--conf spark.adb.regionId=<value>
--conf spark.adb.clusterId=<value>
--conf spark.adb.rgName=<value>
--conf spark.adb.oss.akId=<value>
--conf spark.adb.oss.akSec=<value>
--conf spark.adb.oss.endpoint=<value>
--conf spark.adb.oss.uploadPath=<value>Kirim aplikasi Spark
Unggah file JAR aplikasi Spark Anda ke OSS. Untuk detailnya, lihat Pengunggahan sederhana.
Masuk ke direktori spark-submit.
cd adb-spark-toolkit-submitKirim aplikasi Spark. Ganti nilai placeholder dengan path OSS dan nama resource yang sesuai.
./bin/spark-submit \ --class com.aliyun.spark.oss.SparkReadOss \ --verbose \ --name Job1 \ --jars oss://<bucket-name>/jars/test.jar,oss://<bucket-name>/jars/search.jar \ --conf spark.driver.resourceSpec=medium \ --conf spark.executor.instances=1 \ --conf spark.executor.resourceSpec=medium \ oss://<bucket-name>/jars/test1.jar args0 args1Ganti placeholder sebagai berikut:
Placeholder Deskripsi <bucket-name>Nama bucket OSS yang berisi file JAR Anda args0 args1Argumen untuk file JAR, dipisahkan dengan spasi
Setelah Anda mengirim aplikasi, salah satu kode balasan berikut akan dikembalikan:
| Kode balasan | Makna |
|---|---|
0 | Aplikasi berhasil dijalankan |
255 | Aplikasi gagal |
143 | Aplikasi dihentikan |
Tabel berikut menjelaskan parameter spark-submit yang digunakan dalam perintah di atas.
| Parameter | Deskripsi |
|---|---|
--class | Kelas utama aplikasi Java atau Scala. Tidak diperlukan untuk aplikasi Python. |
--verbose | Mencetak log yang dihasilkan selama pengiriman. |
--name | Nama aplikasi Spark. |
--jars | Daftar path absolut OSS yang dipisahkan koma dari file JAR tambahan yang dibutuhkan aplikasi. Jika Anda menentukan path lokal, tool akan mengunggahnya ke path OSS yang dikonfigurasi di ossUploadPath. Saat file JAR lokal sedang diunggah, sistem memverifikasi file tersebut menggunakan checksum MD5 — jika file dengan nama dan nilai MD5 yang sama sudah ada di OSS, pengunggahan dibatalkan. Jika Anda telah memperbarui file JAR di OSS secara manual, hapus file checksum MD5-nya agar file yang diperbarui diunggah. Pengguna RAM harus memiliki izin AliyunOSSFullAccess. |
--conf | Parameter konfigurasi Spark. Tentukan beberapa parameter sebagai flag terpisah: --conf key1=value1 --conf key2=value2. Untuk parameter khusus AnalyticDB for MySQL, lihat Perbedaan dari spark-submit open source. |
| Path file utama | Path absolut OSS dari file JAR utama (untuk Java/Scala) atau skrip titik masuk (untuk Python). Semua file utama harus disimpan di OSS. |
args | Argumen untuk file JAR, dipisahkan dengan spasi. |
Kelola aplikasi Spark
Setelah mengirim aplikasi, ikuti alur kerja berikut:
Jalankan
--listuntuk mendapatkan ID aplikasi.Gunakan ID aplikasi tersebut dengan
--status,--get-log, atau--detailuntuk memantau kemajuan.Jalankan
--killuntuk menghentikan aplikasi jika diperlukan.
Daftar aplikasi
Gunakan ID aplikasi yang dikembalikan di sini untuk semua perintah pengelolaan lainnya.
./bin/spark-submit --list \
--clusterId <cluster-ID> \
--rgName <resource-group-name> \
--pagenumber 1 \
--pagesize 3Ganti <cluster-ID> dengan ID kluster AnalyticDB for MySQL Anda, dan <resource-group-name> dengan nama kelompok sumber daya pekerjaan.
Periksa status aplikasi
./bin/spark-submit --status <application-ID>Lihat detail pengiriman dan URL Spark UI
./bin/spark-submit --detail <application-ID>Output mencakup bidang Spark WEB UI yang berisi URL Spark UI untuk aplikasi tersebut.
Lihat log aplikasi
./bin/spark-submit --get-log <application-ID>Hentikan aplikasi
./bin/spark-submit --kill <application-ID>Perbedaan dari spark-submit open source
Parameter khusus spark-submit AnalyticDB for MySQL
Parameter berikut hanya tersedia di tool spark-submit AnalyticDB for MySQL.
| Parameter | Bawaan | Deskripsi |
|---|---|---|
--api-retry-times | 3 | Jumlah maksimum percobaan ulang untuk perintah yang gagal. Perintah pengiriman tidak diulang — lihat Batasan untuk detailnya. |
--time-out-seconds | 10 | Periode timeout dalam detik sebelum mencoba ulang perintah yang gagal. |
--enable-inner-endpoint | — | Mengaktifkan akses jaringan internal dalam virtual private cloud (VPC). Gunakan ini saat mengirim aplikasi dari instans Elastic Compute Service (ECS). |
--list | — | Menampilkan daftar aplikasi yang telah dikirim. Gunakan bersama --pagenumber dan --pagesize untuk membagi hasil menjadi halaman. |
--pagenumber | 1 | Nomor halaman untuk hasil daftar. |
--pagesize | 10 | Jumlah aplikasi yang dikembalikan per halaman. |
--kill | — | Menghentikan aplikasi yang ditentukan. |
--get-log | — | Mengambil log untuk aplikasi yang ditentukan. |
--status | — | Menampilkan status aplikasi yang ditentukan. |
Parameter yang tidak didukung oleh spark-submit AnalyticDB for MySQL
Beberapa parameter spark-submit open source tidak didukung. Untuk daftar lengkapnya, lihat topik Parameter konfigurasi aplikasi Spark.