1. Mulai kluster percikan, yaitu untuk mengeksekusi sbin/start-all.sh, mulai master dan beberapa node pekerja. Master terutama digunakan sebagai manajemen dan pemantauan cluster, dan simpul pekerja terutama bertanggung jawab untuk menjalankan berbagai aplikasi. Node master perlu membiarkan simpul pekerja melaporkan statusnya sendiri, seperti CPU dan seberapa besar memori itu. Proses ini diselesaikan melalui mekanisme detak jantung
2. Setelah master menerima informasi laporan pekerja, itu akan memberikan informasi pekerja.
3. Driver mengirimkan tugas untuk memicu cluster [komunikasi antara driver dan master dilakukan melalui Akkaactor, yaitu, Master adalah model aktor dalam model komunikasi asinkron Akkaactor, dan driver adalah sama. Driver secara tidak sinkron mengirimkan informasi pendaftaran (RegisterApplication) secara tidak sinkron ke Master]
4. Master Node memperkirakan aplikasi, 7 g memori menyelesaikan tugas, mengalokasikan tugas, dan setiap simpul pekerja mengalokasikan 3.5g memori untuk menjalankan tugas. Di master, tugas pada setiap pekerja dipantau dan dijadwalkan secara keseluruhan.
5. Node pekerja menerima tugas dan memulai eksekusi. Mulai proses pelaksana yang sesuai pada simpul pekerja untuk dieksekusi. Setiap pelaksana memiliki konsep kumpulan utas, yang berisi beberapa utas tugas.
6. Eksekutor akan mengambil tugas dari kumpulan utas untuk menghitung data dalam RDDPatition, mengubah operasi, dan operasi tindakan.
7. Node pekerja melaporkan status perhitungan ke simpul driver
Buat RDD dengan koleksi paralelisasi lokal
Public Class JavalocalSumApp {public static void main (string [] args) {sparkconf conf = new sparkconf (). setappname ("javalocalsumapp"); javasparkcontext sc = javasparkcontext (conf); list <integer> list = arrays.aslist (1.3,3,3,4,4,4,4,4,4,4; List/list = list = arrays.aslist (1.3,3,4 PAROLLEZER (CONF); LIST/LIST; LIST = ARRAYS.ASLIST (1.3,3,4 Sets <Integer> listrdd = sc.parallelize (daftar); // sum integer sum = listrdd.reduce (function baru2 <integer, integer, integer, integer> () {@override public call (integer v1, integer v2) lemparan pengecuali v1+v2;}}); System.out.println (sum)}} // Pemrograman fungsional di java memerlukan pengaturan kompiler ke 1.8listrdd.reduce ((v1, v2) => v1+v2)Operasi sparktransformasi dan tindakan
RDD: Set data terdistribusi elastis, adalah koleksi yang mendukung banyak sumber, memiliki mekanisme toleran terhadap kesalahan, dapat di-cache, dan mendukung operasi paralel. RDD mewakili kumpulan data di partisi.
RDD memiliki dua operator operasi:
Transformasi: Transformasi adalah perhitungan penundaan. Ketika satu RDD dikonversi ke RDD lain, itu tidak segera dikonversi. Ini mengingat operasi logis dari set data.
Tindakan: Memicu pengoperasian pekerjaan percikan, dan benar -benar memicu perhitungan operator konversi.
Peran Operator Spark
Angka ini menjelaskan Spark Converts RDD melalui operator selama menjalankan konversi. Operator adalah fungsi yang didefinisikan dalam RDD, yang dapat mengonversi dan mengoperasikan data dalam RDD.
Input: Selama program Spark berjalan, data adalah input untuk memicu dari ruang data eksternal (seperti penyimpanan terdistribusi: TextFile untuk membaca HDF, dll., Dan metode paralelisasi memasuki pengumpulan atau data Scala) dan data memasuki ruang data runtime percikan, mengubahnya menjadi blok data dalam percikan, dan dikelola melalui blockManager.
Jalankan: Setelah input data Spark adalah input untuk membentuk RDD, dapat dilewati melalui operator transformasi, seperti filter, dll. Mengoperasikan data dan mengubah RDD menjadi RDD baru. Melalui operator tindakan, Spark mengirimkan pekerjaan. Jika data perlu multiplexed, data dapat di -cache ke memori melalui operator cache.
Output: Data setelah program berjalan akan menjadi output ke Spark Runtime Space dan disimpan dalam penyimpanan terdistribusi (seperti output SaveASTEXTFILE ke HDFS), atau data atau pengumpulan Scala (kumpulkan output ke pengumpulan Scala, hitungan pengembalian data tipe scala int)
Tinjauan Operasi Transformasi dan Tindakan
Transformasi
Peta (func): Mengembalikan dataset terdistribusi baru, terdiri dari setiap elemen asli setelah dikonversi oleh fungsi func
Filter (func): Mengembalikan dataset baru, melewati fungsi FUNC
flatmap (func): Mirip dengan peta, tetapi setiap elemen input akan dipetakan ke 0 ke beberapa elemen output (jadi nilai pengembalian fungsi fungsi adalah seq, bukan elemen tunggal)
Sampel (dengan replacement, frac, seed): Menurut benih acak yang diberikan, data dengan sejumlah FRAC sampel secara acak.
Union (OtherDataset): Mengembalikan dataset baru, terdiri dari dataset dan parameter asli
roupbykey ([numtasks]): dipanggil pada dataset yang terdiri dari (k, v) pasangan, mengembalikan dataset (k, seq [v]) pasangan. Catatan: Secara default, 8 tugas paralel digunakan untuk pengelompokan. Anda dapat meneruskan parameter opsional NumTask dan mengatur jumlah tugas yang berbeda sesuai dengan jumlah data.
RIREDBYKEY (func, [numTass]): Digunakan pada set data pasangan (k, v), mengembalikan set data pasangan (k, v), nilai kunci yang sama dikumpulkan bersama -sama menggunakan fungsi pengurangan yang ditentukan. Mirip dengan GroupBykey, jumlah tugas dapat dikonfigurasi dengan parameter opsional kedua.
Bergabunglah (OtherDataset, [numTasks]): Dipanggil pada dataset tipe (k, v) dan (k, w), mengembalikan pasangan (k, (v, w)), dan semua elemen di setiap kunci bersama -sama.
Groupwith (OtherDataset, [numTasks]): Disebut pada dataset tipe (k, v) dan (k, w) dan mengembalikan dataset dengan komponen (k, seq [v], seq [w]) tupel. Operasi ini berada dalam kerangka lain yang disebut Cogroup
Cartesian (OtherDataset): Produk Cartesian. Tetapi ketika dipanggil pada dataset t dan u, dataset pasangan (t, u) dikembalikan, dan semua elemen berinteraksi dengan produk Cartesian.
Tindakan
redukir (func): Agregat semua elemen dalam dataset melalui fungsi fungsi. Fungsi fungsi menerima 2 parameter dan mengembalikan nilai. Fungsi ini harus dikaitkan untuk memastikan bahwa itu dapat dieksekusi dengan benar dan bersamaan
Collect (): Dalam program driver, kembalikan semua elemen dataset sebagai array. Ini biasanya mengembalikan subset data yang cukup kecil setelah menggunakan filter atau operasi lainnya, dan secara langsung mengembalikan seluruh set RDD, yang kemungkinan akan membuat program driver OOM
Count (): Mengembalikan jumlah elemen dalam dataset
Take (n): Mengembalikan array yang terdiri dari elemen N pertama dari dataset. Perhatikan bahwa operasi ini saat ini tidak dieksekusi secara paralel pada beberapa node, tetapi merupakan mesin di mana program driver berada, dan semua elemen dihitung oleh mesin tunggal (tekanan memori gateway akan meningkat dan perlu digunakan dengan hati -hati)
First (): Mengembalikan elemen pertama dari dataset (mirip dengan Take (1))
SaveastExtFile (PATH): Simpan elemen dataset dalam bentuk TextFile ke sistem file lokal, HDFS atau sistem file lain yang didukung oleh Hadoop. Spark akan memanggil metode tostring dari setiap elemen dan mengubahnya menjadi baris teks dalam file.
SaveAsequenceFile (PATH): Simpan elemen dataset dalam format SequenceFile ke direktori yang ditentukan, sistem lokal, HDFS atau sistem file lain yang didukung oleh Hadoop. Elemen-elemen RDD harus terdiri dari pasangan nilai kunci, dan mereka semua menerapkan antarmuka yang dapat ditulis Hadoop, atau mereka dapat dikonversi menjadi twricited secara implisit (Spark mencakup konversi tipe dasar, seperti int, ganda, string, dll.)
foreach (func): Jalankan fungsi fungsi pada setiap elemen dataset. Ini biasanya digunakan untuk memperbarui variabel akumulator atau berinteraksi dengan sistem penyimpanan eksternal
Proses eksekusi WordCount
Meringkaskan
Di atas adalah semua isi artikel ini tentang prinsip -prinsip arsitektur penjadwalan percikan. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!