Apache Spark definovanými
Apache Spark je zpracování dat rámce, které lze rychle provádět úkoly pro zpracování velmi velkých datových souborů, a může také distribuovat data zpracování úloh na více počítačů, a to buď samostatně, nebo v tandemu s další distribuované výpočetní nástroje. Tyto dvě vlastnosti jsou klíčem ke světům velkých dat a strojového učení, které vyžadují seřazení masivního výpočetního výkonu k crunch prostřednictvím velkých datových úložišť., Spark také vezme některé z programovacích zátěží těchto úkolů z ramen vývojářů pomocí snadno použitelného API, které abstrahuje většinu grunt práce distribuovaných výpočtů a zpracování velkých dat.
od svých skromných začátků v Amplabu na U.C. Berkeley v roce 2009 se Apache Spark stala jedním z klíčových rámců zpracování distribuovaných velkých dat na světě. Spark může být nasazen různými způsoby, poskytuje nativní vazby pro programovací jazyky Java, Scala, Python a R a podporuje SQL, streamování dat, strojové učení a zpracování grafů., Najdete ji používají banky, telekomunikační společnosti, Hry společnosti, vlády, a všechny z hlavních technologických gigantů, jako je Apple, Facebook, IBM, a Microsoft.
Apache Spark architektury
Na základní úrovni, Apache Spark aplikace se skládá ze dvou hlavních součástí: ovladač, který převádí uživatelův kód do více úloh, které mohou být distribuovány přes pracovník uzly a exekutory, které běží na ty uzly a plní úkoly, které jim byly přiděleny. Nějaká forma Správce clusteru je nezbytná pro zprostředkování mezi těmito dvěma.,
po vybalení z krabice může Spark běžet v samostatném režimu clusteru, který jednoduše vyžaduje Apache Spark framework a JVM na každém počítači ve vašem clusteru. Je však pravděpodobnější, že budete chtít využít robustnější systém správy zdrojů nebo klastrů, abyste se postarali o přidělení pracovníků na požádání. V podniku to obvykle znamená běh na Hadoop příze (to je, jak distribuce Cloudera a Hortonworks běží Spark jobs), ale Apache Spark může také běžet na Apache Mesos, Kubernetes a Docker Swarm.,
Pokud hledáte spravované řešení, pak Apache Spark lze nalézt jako součást Amazon EMR, Google Cloud Dataproc, a Microsoft Azure HDInsight. Databricks, společnost, která zaměstnává zakladatelů Apache Spark, nabízí také Databricks Jednotné analytické Platformy, což je komplexní řízené služby, které nabízí Apache Spark klastrů, podpora streamování, integrovaný web-based notebook rozvoje a optimalizované cloud I/O výkonu přes standardní Apache Spark distribuce.
Apache Spark staví příkazy pro zpracování dat uživatele do Směrovaného acyklického grafu nebo DAG., DAG je plánovací vrstva Apache Spark; určuje, jaké úkoly jsou prováděny na jakých uzlech a v jakém pořadí.
Spark vs. Hadoop: Proč používat Apache Spark?
stojí za to poukázat na to, že Apache Spark vs. Apache Hadoop je trochu nesprávné pojmenování. Spark najdete ve většině distribucí Hadoop v těchto dnech. Ale kvůli dvěma velkým výhodám se Spark stala rámcem volby při zpracování velkých dat a předjížděla staré paradigma MapReduce, které Hadoop přivedlo k výtečnosti.
první výhodou je rychlost., Jiskra dat v paměti motoru znamená, že může vykonávat úkoly až stokrát rychleji, než MapReduce v určitých situacích, zejména při srovnání s vícestupňové úlohy, které vyžadují psaní státu zpět na disk mezi několika fázích. V podstatě MapReduce vytváří dvoustupňový graf provádění sestávající z mapování dat a redukce, zatímco DAG Apache Spark má více fází, které lze efektivněji distribuovat. Dokonce i úlohy Apache Spark, kde data nemohou být zcela obsažena v paměti, bývají přibližně 10krát rychlejší než jejich protějšek MapReduce.,
druhou výhodou je pro vývojáře přívětivé Spark API. Stejně důležité jako zrychlení Spark je, dalo by se tvrdit, že přívětivost Spark API je ještě důležitější.
Spark Core
Ve srovnání s MapReduce a další Apache Hadoop komponent, Apache Spark API je velmi přátelský pro vývojáře, skrývá mnoho složitosti distribuované zpracování motoru za jednoduchý způsob volání., Kanonický příklad to je to, jak téměř 50 řádků MapReduce kód, počítat slova v dokumentu může být snížena na jen pár řádků Apache Spark (zde uvedené v Scala):
Tím, že poskytuje zkratky pro populární jazyky pro analýzu dat, jako je Python a R, stejně jako další podnik-přátelský Java a Scala, Apache Spark umožňuje každý z vývojářům aplikací pro datové vědci využít jeho škálovatelnost a rychlost přístupným způsobem.,
Jiskra DDD
V srdci Apache Spark je koncept Pružné Distribuované datové sady (RDD), programovací abstrakce, která představuje neměnný kolekce objektů, které lze rozdělit na výpočetním clusteru. Operace na RDD lze také rozdělit přes cluster a provádět v paralelním dávkovém procesu, což vede k rychlému a škálovatelnému paralelnímu zpracování.
RDDs lze vytvořit z jednoduchých textových souborů, databází SQL, obchodů NoSQL (jako jsou Cassandra a MongoDB), kbelíků Amazon S3 a mnoho dalšího., Velká část Spark Core API je postavena na tomto konceptu RDD, který umožňuje tradiční mapu a snižuje funkčnost, ale také poskytuje vestavěnou podporu pro spojování datových sad, filtrování, vzorkování a agregaci.
Spark běží v distribuovaném módu tím, že kombinuje ovladač hlavní proces, který rozděluje Jiskra aplikace do úkolů a distribuuje je mezi mnoha exekutor procesy, které dělat práci. Tito vykonavatelé mohou být zmenšen nahoru a dolů, jak je požadováno pro potřeby aplikace.,
Spark SQL
původně známý jako Shark, Spark SQL se stal stále důležitějším pro projekt Apache Spark. Je pravděpodobné, že rozhraní nejčastěji používané dnešními vývojáři při vytváření aplikací. Spark SQL je zaměřen na zpracování strukturovaných dat pomocí přístupu dataframe vypůjčeného z R a Pythonu (v pandách). Jak však název napovídá, Spark SQL také poskytuje rozhraní kompatibilní s SQL2003 pro dotazování dat, čímž přináší sílu Apache Spark analytikům i vývojářům.,
Vedle standardních SQL podporu, Spark SQL poskytuje standardní rozhraní pro čtení a zápis do jiných datastore, včetně JSON, HDFS, Apache Hive, JDBC, Apache ORC, a Apache Parkety, z nichž všechny jsou podporovány po vybalení z krabice. Další oblíbené obchody-Apache Cassandra, MongoDB, Apache HBase a mnoho dalších-lze použít vytažením samostatných konektorů z ekosystému Spark Packages.,
Výběr některé sloupce od datovém je stejně jednoduché jako tento řádek:
citiesDF.select("name”, "pop”)
Pomocí SQL rozhraní evidujeme datovém jako dočasné tabulky, po kterých se můžeme vydat SQL dotazy proti to:
citiesDF.createOrReplaceTempView("cities”)
spark.sql("SELECT name, pop FROM cities”)
v zákulisí, Apache Spark používá optimalizátor dotazu zvané Katalyzátor, která zkoumá data a dotazy s cílem vytvořit efektivní plán dotazů pro data lokality a výpočet, který bude provádět potřebné výpočty celého clusteru. V Apache Spark 2.,x éry, Spark SQL rozhraní datové části rámců a datových souborů (v podstatě napsal datovém které mohou být kontrolovány při kompilaci za správnost a využít další paměť a výpočetní optimalizace za běhu) je doporučený postup pro rozvoj. Rozhraní RDD je stále k dispozici, ale doporučuje se pouze v případě, že vaše potřeby nelze řešit v paradigmatu Spark SQL.
Spark 2.4 představil sadu vestavěných funkcí vyššího řádu pro přímou manipulaci s poli a jinými datovými typy vyššího řádu.,
Spark MLlib
Apache Spark také sdružuje knihovny pro použití technik strojového učení a analýzy grafů na data v měřítku. Spark MLlib obsahuje rámec pro vytváření strojového učení potrubí, což umožňuje snadnou implementaci extrakce funkcí, výběrů a transformací na jakékoli strukturované datové sadě. MLlib přichází s distribuovanými implementacemi shlukových a klasifikačních algoritmů, jako je k-znamená shlukování a náhodné lesy, které lze snadno vyměnit dovnitř a ven z vlastních potrubí., Modely mohou být vyškoleni podle údajů vědců v Apache Spark pomocí R nebo Python, uložit pomocí MLlib, a pak importovat do Java nebo Scala-založené potrubí pro produkční použití.
Všimněte si, že zatímco Jiskra MLlib pokrývá základní strojové učení, včetně klasifikace, regrese, shlukování a filtrování, nezahrnuje zařízení pro modelování a výcvik hluboké neuronové sítě (pro podrobnosti viz InfoWorld Jiskra MLlib recenze). Nicméně, hluboké učení potrubí jsou v pracích.,
Spark GraphX
Spark GraphX je dodáván s výběrem distribuovaných algoritmů pro zpracování grafových struktur včetně implementace PageRanku Google. Tyto algoritmy použít Spark Core je RDD přístup k modelování dat; GraphFrames balíček vám umožní udělat graf operace na datové části rámců, včetně s využitím Katalyzátoru optimizer pro graf dotazů.
Spark Streaming
Spark Streaming byl časný kromě Apache Spark, který pomohl to získat trakci v prostředí, které vyžaduje real-time nebo near real-time zpracování., Dříve byly dávkové a streamové zpracování ve světě Apache Hadoop oddělené věci. Chtěli byste napsat MapReduce kód pro vaše potřeby dávkového zpracování a použít něco jako Apache Storm pro vaše požadavky na streamování v reálném čase. To samozřejmě vede k nesourodým codebases, které je třeba udržovat v synchronizaci pro aplikační doménu, přestože jsou založeny na zcela odlišných rámcích, vyžadujících různé zdroje a zahrnující různé provozní obavy pro jejich provoz.,
Spark Streaming rozšířila Apache Spark koncept dávkové zpracování do streaming lámání potoka dolů do kontinuální řady microbatches, které by pak mohly být manipulovat pomocí Apache Spark API. Tímto způsobem může kód v dávkových a streamovacích operacích sdílet (většinou) stejný kód běžící na stejném rámci, čímž se sníží jak vývojář, tak režijní náklady operátora. Všichni vyhrávají.,
kritika Spark Streaming přístupu je, že microbatching, v situacích, kde je nízké latence reakce na příchozí data, je nutné, nemusí být schopen, aby odpovídaly výkonu další streaming, který je schopen rámců, jako je Apache Storm, Apache Flink, a Apache Apex, z nichž všechny používají čistý streaming metoda, spíše než microbatches.
strukturované streamování
strukturované streamování (přidáno v Spark 2.x) je vyvolat streamování, co Spark SQL bylo k API Spark Core: API vyšší úrovně a snadnější abstrakce pro psaní aplikací., V případě streamingu struktury API vyšší úrovně v podstatě umožňuje vývojářům vytvářet nekonečné datové soubory a datové soubory pro streamování. Řeší také některé velmi skutečné body bolesti, se kterými se uživatelé v dřívějším rámci potýkali, zejména pokud jde o řešení agregací událostí a pozdního doručení zpráv. Všechny dotazy týkající se strukturovaných toků procházejí optimalizátorem dotazů Catalyst a lze je dokonce spustit interaktivním způsobem, což uživatelům umožňuje provádět dotazy SQL proti datům živého přenosu.,
strukturované streamování se původně spoléhalo na schéma mikrobatchingu Spark streamingu při manipulaci se streamovanými daty. Ale v Spark 2.3 přidal tým Apache Spark do strukturovaného streamování režim nepřetržitého zpracování s nízkou latencí, což mu umožnilo zpracovat odpovědi s latencí až 1ms, což je velmi působivé. Od Spark 2.4 je kontinuální zpracování stále považováno za experimentální. Zatímco strukturované streamování je postaveno na vrcholu Spark SQL engine, nepřetržité streamování podporuje pouze omezenou sadu dotazů.,
strukturované streamování je budoucností streamovacích aplikací s platformou, takže pokud vytváříte novou streamovací aplikaci, měli byste použít strukturované streamování. Dědictví Spark Streaming Api, budou i nadále podporovány, ale projekt doporučuje portování přes Strukturované Streaming, jako nová metoda umožňuje psaní a udržování streaming kód mnohem snesitelnější.
hluboké učení potrubí
Apache Spark podporuje hluboké učení přes hluboké učení potrubí., Pomocí stávající struktury potrubí MLlib můžete volat do knihoven hlubokého učení na nižší úrovni a konstruovat klasifikátory v několika řádcích kódu, stejně jako aplikovat vlastní grafy TensorFlow nebo modely Keras na příchozí data. Tyto grafy a modely mohou být dokonce registrovány jako vlastní Spark SQL UDFs (uživatelsky definované funkce), takže modely hlubokého učení lze aplikovat na data jako součást příkazů SQL.
Apache Spark tutoriály
připraven se ponořit a naučit Apache Spark?, Doporučujeme Evan Heitman je Neandrtálec Průvodce Apache Spark v Pythonu, který nejen stanoví základy, jak Apache Spark funguje v relativně jednoduchých podmínkách, ale také vás provede procesem psaní jednoduchý Python aplikace, která využívá rámce. Článek je napsán z pohledu datového vědce, což dává smysl, protože datová věda je svět, ve kterém jsou velká data a strojové učení stále kritičtější.,
Pokud hledáte nějaké příklady Apache Spark, které vám poskytnou představu o tom, co platforma dokáže a jak to dělá, podívejte se na Spark pomocí {příklady}. Tam je spousta ukázkový kód pro několik základních úkolů, které tvoří stavební kameny Jiskra programování, takže můžete vidět komponenty, které tvoří větší úkoly, které Apache Spark je vyroben pro.
je třeba jít hlouběji? DZone má to, co skromně označuje jako kompletní sbírku Apache Spark, která se skládá z mnoha užitečných tutoriálů o mnoha tématech Apache Spark. Šťastné učení!