Menyelesaikan Isu Kebergantungan dalam Apache Spark
Apache Spark ialah rangka kerja yang teguh untuk pemprosesan data teragih, tetapi masalah kebergantungan boleh timbul semasa pembangunan aplikasi dan penempatan. Artikel ini menangani isu pergantungan biasa dan menyediakan penyelesaian praktikal.
Isu biasa dalam aplikasi Spark termasuk:
- java.lang.ClassNotFoundException - Kelas yang dirujuk dalam kod tidak dapat ditemui.
- objek x bukan ahli ralat penyusunan pakej y - Kelas yang dijangkakan dalam pakej ialah hilang.
- java.lang.NoSuchMethodError - Kaedah yang dijangkakan dalam kelas tidak ditakrifkan.
Satu aspek asas pengurusan laluan kelas Spark ialah ia dibina secara dinamik semasa pelaksanaan aplikasi. Fleksibiliti ini menampung kod pengguna setiap aplikasi, tetapi ia juga memperkenalkan potensi kerentanan kepada konflik pergantungan.
Memahami komponen aplikasi Spark dan aliran kelas merentasnya adalah penting untuk menyelesaikan isu pergantungan. Aplikasi Spark terdiri daripada komponen berikut:
-
Pemandu: Melaksanakan kod pengguna dan menyambung kepada pengurus kluster.
-
Pengurus Kluster : Menguruskan peruntukan sumber untuk pelaksana. Jenis biasa termasuk Standalone, YARN dan Mesos.
-
Pelaksana: Laksanakan kerja sebenar dengan menjalankan tugas Spark pada nod kelompok.
Rajah berikut menggambarkan hubungan antara komponen ini:
[Imej Gambaran Keseluruhan Mod Kluster rajah]
Penempatan kelas yang betul adalah penting untuk mengelakkan isu pergantungan. Rajah berikut menggariskan pengedaran kelas yang disyorkan:
[Imej Gambar rajah Gambaran Keseluruhan Peletakan Kelas]
-
Kod Spark: Perpustakaan Spark mesti ada dalam semua komponen untuk memudahkan komunikasi.
-
Kod Pemandu Sahaja: Kod yang tidak perlu dilaksanakan pada Pelaksana, seperti tugasan permulaan atau persediaan.
-
Kod Diedarkan: Kod yang dilaksanakan pada kedua-dua Pemacu dan Pelaksana, termasuk transformasi dan fungsi pengguna.
Untuk memastikan penggunaan yang berjaya, patuhi perkara berikut garis panduan:
-
Kod Spark: Gunakan versi Scala dan Spark yang konsisten dalam semua komponen.
-
Kod Pemandu: Kod pemandu pakej sebagai "balang lemak" yang mengandungi semua kebergantungan kod Spark dan pengguna.
-
Diedarkan Kod: Selain disertakan dalam pemacu, kod yang diedarkan mesti dihantar kepada pelaksana menggunakan parameter spark.jars.
Ringkasnya, pendekatan yang disyorkan untuk membina dan menggunakan aplikasi Spark melibatkan :
- Buat pustaka dengan kod yang diedarkan dan bungkusnya sebagai kedua-dua biasa dan "balang lemak."
- Buat aplikasi pemacu dengan kebergantungan kompilasi pada perpustakaan kod yang diedarkan dan Spark.
- Bungkus aplikasi pemacu ke dalam "balang lemak" untuk digunakan kepada pemandu.
- Nyatakan versi kod teragih yang betul menggunakan parameter spark.jars semasa mencipta SparkSession.
- Sediakan fail arkib yang mengandungi binari Spark menggunakan parameter spark.yarn.archive (untuk YARN).
Dengan mengikut garis panduan ini, pembangun boleh menyelesaikan isu pergantungan dalam Apache Spark dengan berkesan dan memastikan pelaksanaan aplikasi yang boleh dipercayai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Isu Kebergantungan dengan Berkesan dalam Aplikasi Apache Spark?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!