Apache Spark má své architektonické nadace v pružné distribuované datové sady (RDD), read-only multiset z datové položky distribuován přes clusteru stroje, která je udržována v chyba-tolerantní. Dataframe API byl propuštěn jako abstrakce na vrcholu RDD, následovaný Dataset API. V Jiskře 1.x, RDD bylo primární aplikační programovací rozhraní (API), ale od Spark 2.x použití datového souboru API je podporováno, i když RDD API není zastaralé. Technologie RDD je stále základem datového souboru API.,
Spark a jeho RDDs byly vyvinuty v roce 2012 v reakci na omezení v MapReduce clusteru výpočetní paradigma, které nutí určité lineární tok dat struktura pro distribuované programy: MapReduce programů, čtení vstupních dat z disku, mapa funkce přes data, snížit výsledky, mapy, a uložit výsledky snížení na disku. Funkce Spark RDDs jako pracovní sada pro distribuované programy, která nabízí (záměrně) omezenou formu distribuované sdílené paměti.,
Spark usnadňuje implementaci obou iteračních algoritmů, které navštěvují jejich datovou sadu vícekrát ve smyčce, a interaktivní / průzkumnou analýzu dat, tj. Latence těchto aplikací může být snížena o několik řádů ve srovnání s implementací Apache Hadoop MapReduce.Mezi třídou iteračních algoritmů patří tréninkové algoritmy pro systémy strojového učení, které tvořily počáteční impuls pro vývoj Apache Spark.
Apache Spark vyžaduje správce clusteru a distribuovaný úložný systém., Pro správu clusteru podporuje Spark samostatný (nativní Spark cluster, kde můžete spustit cluster buď ručně, nebo použít spouštěcí skripty poskytované instalačním balíčkem. Je také možné spustit tyto démony na jednom stroji pro testování), Hadoop příze, Apache Mesos nebo Kubernetes. Pro distribuované ukládání, Jiskra může rozhraní s celou řadu, včetně Alluxio, Hadoop Distributed File System (HDFS), MapR Systému Souborů (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Lesk souborový systém, nebo vlastní řešení mohou být realizovány., Spark také podporuje pseudo-distribuovaný místní režim, obvykle používá pouze pro vývojové nebo testovací účely, kde distribuované skladování není nutná a místního systému souborů může být použit místo; v takové situaci, Jiskra je spustit na jednom počítači s jedním exekutorem na jádro PROCESORU.
Spark CoreEdit
Spark Core je základem celkového projektu. Poskytuje distribuované odesílání úloh, plánování a základní i / o funkce, exponované prostřednictvím aplikačního programovacího rozhraní (pro Java, Python, Scala, .,NET A R) soustředěný na abstrakci RDD (Java API je k dispozici pro jiné jazyky JVM, ale je také použitelný pro některé jiné jazyky, které nejsou JVM, které se mohou připojit k JVM, jako je Julia). Toto rozhraní zrcadla funkční/higher-order model programování: „řidič“ program vyvolá paralelní operace jako map, filter nebo snížit na rozprašovačem předáním funkce pro Jiskru, která pak plány vykonávání funkce paralelně na clusteru. Tyto operace a další, jako jsou spoje, berou RDD jako vstup a vytvářejí nové RDD., RDD jsou neměnné a jejich operace jsou líné; tolerance poruch je dosažena sledováním „linie“ každého RDD (sekvence operací, které ji vytvořily), aby mohla být v případě ztráty dat rekonstruována. RDDs může obsahovat jakýkoli typ objektů Python,. Net, Java nebo Scala.
Kromě RDD-orientované funkční styl programování, Spark nabízí dva omezené formy sdílené proměnné: vysílání referenční proměnné pouze pro čtení dat, která musí být k dispozici na všech uzlech, zatímco akumulátory mohou být použity k programu snížení v naléhavých styl.,
typický příklad RDD-centric funkční programování je následující Scala program, který vypočítá frekvence všech slov vyskytujících se v souboru textové soubory a vytiskne nejběžnější. Každá mapa, flatMap (varianta mapy) a reduceByKey má anonymní funkci, která provádí jednoduchou operaci na jedné datové položce (nebo dvojici položek) a uplatňuje svůj argument pro transformaci RDD na novou RDD.,
Spark Sqledit
Spark SQL je komponenta na vrcholu Spark Core, která zavedla datovou abstrakci nazvanou DataFrames, která poskytuje podporu strukturovaných a polostrukturovaných dat. Spark SQL poskytuje jazyk specifický pro doménu (DSL) pro manipulaci s DataFrames v Scala, Java, Python nebo .NET. poskytuje také podporu jazyka SQL, s rozhraním příkazového řádku a serverem ODBC/JDBC. Přestože DataFrames postrádají kontrolu typu kompilace-time poskytovanou RDDs, od Spark 2.0 je silně zadaná datová sada plně podporována Spark SQL.,
Spark StreamingEdit
Spark Streaming používá schopnost rychlého plánování Spark Core k provádění analytiky streamování. Využívá data v mini-dávkách a provádí transformace RDD na těchto mini-šaržích dat. Tento návrh umožňuje použít stejnou sadu aplikačního kódu napsaného pro dávkovou analýzu v analytice streamování, což usnadňuje snadnou implementaci architektury lambda. Toto pohodlí však přichází s trestem latence rovnajícím se trvání mini-šarže., Mezi další datové motory pro streamování, které zpracovávají událost podle události, spíše než v mini-dávkách, patří Storm a streamovací složka Flink. Spark Streaming má podporu vestavěnou ke konzumaci ze zásuvek Kafka, Flume, Twitter, ZeroMQ, Kinesis a TCP/IP.
In Spark 2.x, samostatná technologie založená na datových sadách, nazývaná strukturované streamování, která má rozhraní vyšší úrovně, je také poskytována na podporu streamování.
Spark lze nasadit v tradičním datovém centru i v cloudu.,
MLlib Strojového Učení LibraryEdit
Spark MLlib je distribuován strojové učení rámec, na vrcholu Spark Core, díky ve velké části k distribuované paměti založené na Zapalovací architektury, je stejně jako devět krát tak rychle, jak je disk-založené implementace používá Apache Mahut (podle kritérií provádí MLlib vývojáři proti střídavé nejmenších čtverců (ALS) implementace, a než Mahut získal sám Jiskra rozhraní), a váhy lepší než Vowpal Králíček.,, Gradient-Posílen Strom
GraphXEdit
GraphX je distribuován graf-zpracování rámce na vrcholu Apache Spark., Protože je založena na RDDs, které jsou neměnné, grafy jsou neměnné, a tudíž GraphX je nevhodné pro grafy, které je třeba aktualizovat, natož v transakční způsobem, jako graf databáze. GraphX poskytuje dvě samostatná API pro implementaci masivně paralelních algoritmů( jako je PageRank): abstrakce Pregel a obecnější API ve stylu MapReduce. Na rozdíl od svého předchůdce Bagel, který byl formálně zastaralý v Spark 1.6, GraphX má plnou podporu pro grafy vlastností (grafy, kde mohou být vlastnosti připojeny k okrajům a vrcholům).,
GraphX lze považovat za jiskru v paměti verze Apache Giraph, který využíval Hadoop disk založené MapReduce.
jako Apache Spark, GraphX zpočátku začal jako výzkumný projekt na UC Berkeley AMPLab a Databricks,a byl později darován Apache Software Foundation a projektu Spark.
Leave a Reply