Cel mai bun răspuns
Pentru ceea ce privește cadrul în ansamblu: în acest moment Apache Spark este cu un pas înaintea concurenților săi , datorită unor caracteristici precum implementarea (și integrarea) unor instrumente diferite și foarte utile (Spark SQL și MLlib doar pentru a numi două) și capacitatea de a stoca date intermediare în RDD-uri. Datorită acestui motiv, mulți dezvoltatori se concentrează asupra acestuia și presupun că până la apariția unei noi descoperiri în tehnologia de bază, orice concurent va fi neglijabil.
În mod diferit, dacă luați în considerare implementările unice pe Apache Spark, puteți identifica unii concurenți: H2O este un provocator al Spark MLlib, Storm (a subliniat de Joe) este o alternativă la streamingul Spark și acolo există mai multe motoare de tip SQL care pot fi comparate cu Spark SQL .
Răspuns
Iată câteva JARGONS de la Apache Spark pe care le voi folosi.
Job: – O bucată de cod care citește unele intrări de la HDFS sau locale, efectuează unele calcule asupra datelor și scrie unele date de ieșire.
Etape: -Locurile sunt împărțite în etape . Etapele sunt clasificate ca Hărți sau etape reduse (Este mai ușor de înțeles dacă ați lucrat la Hadoop și doriți să vă corelați). Etapele sunt împărțite pe baza limitelor de calcul, toate calculele (operatorii) nu pot fi actualizate într-o singură etapă. Se întâmplă pe mai multe etape.
Sarcini: – Fiecare etapă are unele sarcini, câte o sarcină pe partiție. O sarcină este executată pe o partiție de date pe un singur executor (mașină).
DAG – DAG înseamnă Grafic aciclic direcționat, în contextul actual este un DAG de operatori.
Executor – Procesul responsabil cu executarea unei sarcini.
Driver – Programul / procesul responsabil cu executarea Jobului prin Spark Engine
Master – Mașina pe care rulează programul Driver
Slave – Mașina pe care rulează programul Executor
Toate joburile din spark cuprind o serie de operatori și rulează pe un set de date. Toți operatorii dintr-o lucrare sunt folosiți pentru a construi un DAG (Grafic Aciclic Direcționat). DAG este optimizat prin rearanjarea și combinarea operatorilor acolo unde este posibil. De exemplu, să presupunem că trebuie să trimiteți o lucrare Spark care conține o operație de hartă urmată de o operație de filtrare. Optimizatorul Spark DAG ar rearanja ordinea acestor operatori, deoarece filtrarea ar reduce numărul de înregistrări care urmează să fie supuse operației de hartă.
Spark are o bază mică de cod și sistemul este împărțit în diferite straturi. Fiecare strat are unele responsabilități. Straturile sunt independente una de cealaltă.
- Primul strat este interpret , Spark folosește un interpret Scala, cu unele modificări.
- Pe măsură ce introduceți codul în consola spark (creați RDD-uri și aplicați operatori ), Spark creează un grafic operator.
- Când utilizatorul execută o acțiune (cum ar fi colectare), graficul este trimis către un programator DAG. programatorul DAG împarte graficul operatorului în (mapează și reduce) etapele.
- O etapă cuprinde sarcini bazate pe partiții ale datelor de intrare. Planificatorul de conducte DAG operează împreună pentru a optimiza graficul. De exemplu, Multe operatorii de hărți pot fi programați într-o singură etapă. Această optimizare este esențială pentru performanța Sparks. Rezultatul final al unui planificator DAG este un set de etape.
- Etapele sunt transmise către Programator activități . Programatorul activităților lansează activități prin manager de cluster . (Spark Standalone / Yarn / Mesos). Planificatorul de activități nu știe despre dependențele dintre etape.
- Worker execută sarcinile pe Slave. O nouă JVM este pornită pe JOB. Lucrătorul știe doar despre codul care i se transmite.
Spark memorează în cache datele care urmează să fie procesate, permițându-mi-le de 100 de ori mai repede decât hadoop. Spark folosește Akka pentru Multithreading, gestionarea stării executantului, programarea sarcinilor. Folosește Jetty pentru a partaja fișiere (Jars și alte fișiere), difuzare Http, rula Spark Web UI. Spark este extrem de configurabil și este capabil să utilizeze componentele existente deja existente în Hadoop Eco-System. Acest lucru a permis scânteia să crească exponențial și, în puțin timp, multe organizații o folosesc deja în producție.
Puteți privi
pentru a înțelege lucrurile mai detaliat.