Mengatasi Isu Kebergantungan dalam Apache Spark
Aplikasi Apache Spark biasanya menghadapi isu berkaitan kebergantungan semasa pembinaan dan penggunaan. Masalah ini termasuk java.lang.ClassNotFoundException, objek x bukan ahli ralat kompilasi pakej y dan java.lang.NoSuchMethodError.
Dinamic Classpath dan Pengurusan Ketergantungan
Path kelas Spark, yang dibina secara dinamik untuk menampung pengguna kod, boleh membawa kepada masalah ini. Selain itu, pengurus kluster khusus (tuan) yang diambil bekerja memperkenalkan pertimbangan selanjutnya.
Komponen dan Peletakan Kelas
Aplikasi Spark terdiri daripada komponen berikut:
- Pemandu: Memulakan aplikasi dan menyambung kepada pengurus kluster.
- Kluster Pengurus: Memudahkan peruntukan sumber dan mengagihkan kerja kepada pelaksana.
- Pelaksana: Laksanakan tugas Spark pada nod kelompok.
Penempatan kelas setiap komponen digambarkan di bawah:
< ;p>
Kod Pengedaran
Memahami keperluan penempatan kelas membolehkan pengedaran kod yang betul merentas komponen:
-
Kod Spark: Termasuk perpustakaan yang diperlukan oleh semua komponen dan mesti tersedia dalam ketiga-tiganya.
-
Kod Pemandu Sahaja: Kod pengguna yang tidak memerlukan pengedaran kepada pelaksana.
-
Diedarkan Kod: Kod pengguna yang perlu dijalankan pada pelaksana dan mesti dihantar kepada mereka.
Pengurusan Kebergantungan dalam Pengurus Kluster Berbeza
Berdiri sendiri:
- Memerlukan semua pemandu menggunakan perkara yang sama Versi Spark sebagai induk dan pelaksana.
BENANG / Mesos:
- Membenarkan versi Spark yang berbeza untuk setiap aplikasi.
- Versi pemacu mesti sepadan dengan versi yang digunakan semasa penyusunan dan pembungkusan.
- Spark dependencies, termasuk kebergantungan transitif, mesti disertakan dalam balang/arkib yang diedarkan.
Pendekatan Cadangan Menggunakan BENANG
Untuk meminimumkan isu pergantungan, pertimbangkan pendekatan berikut:
- Buat perpustakaan dengan kod yang diedarkan sebagai balang biasa dan lemak jar.
- Buat aplikasi pemacu dengan kebergantungan pada perpustakaan kod yang diedarkan dan Apache Spark (versi khusus).
- Buat aplikasi pemacu sebagai balang lemak.
- Gunakan parameter spark.jars untuk menentukan versi kod yang diedarkan.
- Gunakan parameter spark.yarn.archive untuk menyediakan fail arkib yang mengandungi perduaan Spark.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengurus Kebergantungan Secara Berkesan untuk Mengelakkan Ralat dalam Aplikasi Apache Spark?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!