Nejlepší odpověď
Co se týká rámce jako celku: v tomto okamžiku je Apache Spark o krok před svými konkurenty , kvůli některým charakteristikám, jako je implementace (a integrace) různých a velmi užitečných nástrojů (Spark SQL a MLlib, abychom jmenovali jen dvě) a schopnost ukládat mezilehlá data do RDD. Kvůli tomuto motivu se na něj mnoho vývojářů soustředí a myslím, že dokud nepřijde nový průlom v základní technologii, bude jakýkoli konkurent zanedbatelný.
Jinak, pokud vezmete v úvahu jednotlivé implementace na Apache Spark můžete identifikovat některé konkurenty: H2O je vyzyvatelem Spark MLlib, Storm (na který upozornil Joe) je alternativou k streamování Spark a existuje několik motorů podobných SQL, které lze porovnat se Spark SQL .
Odpověď
Zde jsou některé JARGONY od Apache Spark, které budu používat.
Úloha: – Část kódu, která čte nějaký vstup z HDFS nebo lokálně, provádí určitý výpočet dat a zapisuje některá výstupní data.
Fáze: – Úkoly jsou rozděleny do etap . Fáze jsou klasifikovány jako mapa nebo redukce fází (je snazší pochopit, pokud jste pracovali na Hadoopu a chcete korelovat). Fáze jsou rozděleny na základě výpočetních hranic, všechny výpočty (operátory) nelze aktualizovat v jedné fázi. Stává se to v mnoha fázích.
Úkoly: – Každá fáze má nějaké úkoly, jeden úkol na oddíl. Jeden úkol se provádí na jednom datovém oddílu na jednom exekutoru (stroji).
DAG – DAG znamená Directed Acyclic Graph, v současné době je to DAG operátorů.
Exekutor – Proces odpovědný za provedení úkolu.
Driver – Program / proces odpovědný za spuštění úlohy přes Spark Engine
Master – Stroj, na kterém běží program Driver
Slave – Stroj, na kterém běží program Exekutor
Všechny úlohy v jiskře obsahují řadu operátorů a běží na sadě dat. Všichni operátoři v úloze se používají ke konstrukci DAG (Directed Acyclic Graph). DAG je optimalizován přeskupením a kombinací operátorů, kde je to možné. Předpokládejme například, že musíte odeslat úlohu Spark obsahující operaci mapy následovanou operací filtru. Optimalizátor Spark DAG by změnil pořadí těchto operátorů, protože filtrování by snížilo počet záznamů, které by se měly podrobit mapové operaci.
Spark má malou kódovou základnu a systém je rozdělen do různých vrstev. Každá vrstva má určité povinnosti. Vrstvy jsou na sobě nezávislé.
- První vrstva je tlumočník , Spark používá s některými úpravami tlumočník Scala.
- Při zadávání kódu do jiskrové konzoly (vytváření RDD a použití operátorů ), Spark vytvoří operátorský graf.
- Když uživatel spustí akci (jako shromažďování), graf se odešle plánovači DAG. plánovač DAG rozděluje operátorský graf na fáze (mapuje a redukuje).
- Fáze se skládá z úkolů založených na oddílech vstupních dat. Plánovač DAG spojuje operátory, aby optimalizovali graf. Např. mnoho operátory map lze naplánovat v jedné fázi. Tato optimalizace je klíčem k výkonu Sparks. Konečným výsledkem plánovače DAG je sada fází.
- Fáze se předávají Plánovač úloh . Plánovač úloh spouští úkoly pomocí správce klastrů . (Spark Standalone / Yarn / Mesos). Plánovač úloh neví o závislostech mezi fázemi.
- Pracovník provádí úkoly na slave. Nový JVM se spouští ÚLOHA. Pracovník ví jen o kódu, který mu je předán.
Spark ukládá data, která mají být zpracována, do mezipaměti 100krát rychleji než hadoop. Spark používá Akka pro multithreading, správa stavu vykonavatele, plánování úkolů. Používá Jetty ke sdílení souborů (sklenic a dalších souborů), Http Broadcast, spouštění webového uživatelského rozhraní Spark. Spark je vysoce konfigurovatelný a je schopen využívat existující komponenty již existující v ekosystému Hadoop. To umožnilo exponenciální růst jiskry a za krátkou dobu ji již mnoho organizací používá ve výrobě.
Můžete se podívat na
abyste věděli věci podrobněji.