Apache Spark are fundamentul său arhitectural în setul de date distribuite rezilient (RDD), un MultiSet numai pentru citire de elemente de date distribuite pe un grup de mașini, care este menținut într-un mod tolerant la erori. API-ul Dataframe a fost lansat ca o abstractizare pe partea de sus a RDD, urmată de API-ul Set de date. În Spark 1.X, RDD a fost interfața principală de programare a aplicațiilor (API), dar începând cu Spark 2.x utilizarea API-ului setului de date este încurajată chiar dacă API-ul RDD nu este depreciat. Tehnologia RDD stă încă la baza API-ului setului de date.,
Scânteie și RDDs au fost dezvoltate în 2012 ca răspuns la limitările în MapReduce cluster computing paradigmă, care forțează o anumită liniară structura fluxului de date distribuite pe programe: programe MapReduce citește datele de intrare de pe disc, harta o funcție peste datelor, pentru a reduce rezultatele hartă, și magazin de reducere rezultate pe disc. Funcția rdds Spark ca un set de lucru pentru programe distribuite, care oferă o formă (în mod deliberat) restricționat de memorie partajată distribuită.,Spark facilitează implementarea atât a algoritmilor iterativi, care vizitează setul de date de mai multe ori într-o buclă, cât și a analizei interactive/exploratorii a datelor, adică interogarea repetată a datelor în stilul bazei de date. Latența acestor aplicații poate fi redusă cu mai multe ordine de mărime în comparație cu implementarea Apache Hadoop MapReduce.Printre clasa algoritmilor iterativi se numără algoritmii de instruire pentru sistemele de învățare automată, care au format impulsul inițial pentru dezvoltarea Apache Spark.Apache Spark necesită un manager de cluster și un sistem de stocare distribuit., Pentru gestionarea clusterului, Spark acceptă independent (nativ Spark cluster, unde puteți lansa un cluster fie manual, fie utilizați scripturile de lansare furnizate de pachetul de instalare. De asemenea, este posibil pentru a rula aceste demoni pe o singură mașină pentru testare), Hadoop fire, Apache Mesos sau Kubernetes. Pentru stocarea distribuită, Spark poate interfața cu o mare varietate, inclusiv Alluxio, Hadoop Distributed File System (HDFS), MapR File System (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Lustre file system sau o soluție personalizată poate fi implementată., Spark acceptă, de asemenea, un mod local pseudo-distribuit, utilizat de obicei numai în scopuri de dezvoltare sau testare, unde stocarea distribuită nu este necesară și sistemul de fișiere local poate fi utilizat în schimb; într-un astfel de scenariu, Spark este rulat pe o singură mașină cu un executor pe nucleu CPU.
Spark CoreEdit
Spark Core este fundamentul proiectului de ansamblu. Acesta oferă sarcini distribuite dispatching, programare, și i / o funcționalități de bază, expuse printr-o interfață de programare aplicație (pentru Java, Python, Scala, .,NET și R) centrat pe abstractizarea RDD (API-ul Java este disponibil pentru alte limbi JVM, dar este de asemenea utilizabil pentru alte limbi non-JVM care se pot conecta la JVM, cum ar fi Julia). Această interfață reflectă un model funcțional / de ordin superior de programare: un program „driver” invocă operații paralele, cum ar fi map, filter sau reduce pe un RDD prin trecerea unei funcții la Spark, care apoi programează execuția funcției în paralel pe cluster. Aceste operațiuni, precum și altele suplimentare, cum ar fi joins, iau RDDs ca intrare și produc noi RDDs., RDDs sunt imuabile și operațiunile lor sunt leneși; vina-toleranța se realizează prin urmărirea de „neam” de fiecare RDD (secvența de operațiuni care a produs-o), astfel încât acesta poate fi reconstruit în caz de pierdere de date. RDDs poate conține orice tip de Python,. Net, Java, sau obiecte Scala.pe lângă stilul funcțional orientat RDD de programare, Spark oferă două forme restricționate de variabile partajate: variabile de difuzare de referință read-only date care trebuie să fie disponibile pe toate nodurile, în timp ce acumulatorii pot fi folosite pentru a programa reduceri într-un stil imperativ.,un exemplu tipic de programare funcțională centrată pe RDD este următorul program Scala care calculează frecvențele tuturor cuvintelor care apar într-un set de fișiere text și imprimă cele mai frecvente. Fiecare hartă, flatMap (o variantă de hartă) și reductebykey are o funcție anonimă care efectuează o operație simplă pe un singur element de date (sau o pereche de elemente) și aplică argumentul său pentru a transforma un RDD într-un nou RDD.,Spark SQL este o componentă pe partea de sus a Spark Core care a introdus o abstractizare de date numit DataFrames, care oferă suport pentru date structurate și semi-structurate. Spark SQL oferă un domeniu-specifice limbii (DSL) pentru a manipula DataFrames în Scala, Java, Python sau .NET. Acesta oferă, de asemenea, SQL language support, cu interfețe de linie de comandă și ODBC/JDBC server. Deși DataFrames nu au verificarea tipului de compilare oferită de RDDs, începând cu Spark 2.0, setul de date puternic tastat este pe deplin acceptat și de Spark SQL.,
Spark StreamingEdit
Spark Streaming utilizează capacitatea de programare rapidă a Spark Core pentru a efectua analize de streaming. Acesta ingerează date în mini-loturi și efectuează transformări RDD pe acele mini-loturi de date. Acest design permite ca același set de cod de aplicație scris pentru analiza lotului să fie utilizat în analiza de streaming, facilitând astfel implementarea ușoară a arhitecturii lambda. Cu toate acestea, această comoditate vine cu pedeapsa de latență egală cu durata mini-lotului., Alte motoare de date de streaming care procesează eveniment după eveniment, mai degrabă decât în mini-loturi includ Storm și componenta de streaming a Flink. Spark Streaming are suport încorporat pentru a consuma din prize Kafka, Flume, Twitter, ZeroMQ, Kinesis și TCP/IP.
în Spark 2.x, o tehnologie separată bazată pe seturi de date, numită streaming structurat, care are o interfață de nivel superior, este, de asemenea, furnizată pentru a sprijini streamingul.Spark poate fi implementat într-un centru de date local tradițional, precum și în cloud.,
MLlib de Învățare Mașină LibraryEdit
Scânteie MLlib este un distribuit de învățare mașină-cadru pe partea de sus a Core Spark că, datorită în mare parte distribuite bazate pe memorie Scânteie arhitectura, este pe cât de nouă ori la fel de repede ca discul bazat pe implementarea folosit de Apache conducător de elefanți (în funcție de indicii de referință făcut de MLlib dezvoltatorii împotriva alternativ celor mai mici pătrate (ALS) implementări, și înainte de conducător de elefanți câștigat în sine o Scânteie interface), și solzi mai bine decât Vowpal de Iepuri.,, Gradient-Amplificat Copac
GraphXEdit
GraphX este un distribuit graficul-cadru de procesare pe partea de sus a Apache Spark., Pentru că se bazează pe RDDs, care sunt imuabile, graficele sunt imuabile și, astfel, GraphX este nepotrivit pentru grafice care trebuie să fie actualizat, darămite într-o manieră tranzacțională ca un grafic de date. GraphX oferă două API-uri separate pentru implementarea algoritmilor masiv paraleli (cum ar fi PageRank): o abstracție Pregel și un API mai general în stil MapReduce. Spre deosebire de predecesorul său Bagel, care a fost oficial depreciat în Spark 1.6, GraphX are suport complet pentru graficele de proprietate (grafice în care proprietățile pot fi atașate la margini și vârfuri).,
GraphX poate fi privit ca fiind Spark în memorie versiune a Apache Giraph, care a utilizat Hadoop bazate pe disc MapReduce.
Cum ar fi Apache Spark, GraphX a început inițial ca un proiect de cercetare la UC Berkeley AMPLab și Databricks, iar ulterior a fost donat la Apache Software Foundation și Scânteia proiect.
Leave a Reply