Spark vs Hadoop: Který je nejlepší rámec velkých dat?



Tento příspěvek na blogu hovoří o apache spark vs hadoop. Poskytne vám představu o tom, který je správný rámec Big Data pro výběr v různých scénářích.

Začnu tento blog Apache Spark vs Hadoop tím, že nejprve představím Hadoop a Spark, abych nastavil správný kontext pro oba rámce. Poté, vpřed, porovnáme oba rámce Big Data s různými parametry a analyzujeme jejich silné a slabé stránky.Bez ohledu na výsledek našeho srovnání byste však měli vědět, že Spark i Hadoop jsou rozhodujícími součástmi .

Apache Spark vs Hadoop: Úvod do Hadoop

Hadoop je rámec, který vám umožní nejprve ukládat velká data v distribuovaném prostředí, abyste je mohli paralelně zpracovávat. V zásadě jsou v Hadoopu dvě komponenty:





HDFS

HDFS vytváří abstrakci zdrojů, dovolte mi to pro vás zjednodušit. Podobně jako virtualizace můžete HDFS logicky vidět jako jednu jednotku pro ukládání velkých dat, ale ve skutečnosti ukládáte data napříč více uzly distribuovaným způsobem. Tady máte architekturu master-slave. V HDFS je Namenode hlavním uzlem a datanody jsou otroky.

NameNode

Je to hlavní démon, který udržuje a spravuje DataNodes (podřízené uzly). Zaznamenává metadata všech souborů uložených v klastru, např. umístění uložených bloků, velikost souborů, oprávnění, hierarchie atd. Zaznamenává každou každou změnu, která nastane v metadatech systému souborů.



Například pokud je soubor odstraněn v HDFS, NameNode to okamžitě zaznamená v EditLogu. Pravidelně přijímá Heartbeat a blokovou zprávu ze všech DataNodes v klastru, aby bylo zajištěno, že jsou DataNodes aktivní. Udržuje záznamy o všech blocích v HDFS a o tom, ve kterých uzlech jsou tyto bloky uloženy.

DataNode

Jedná se o otrokářské démony, které běží na každém otrokářském stroji. Skutečná data jsou uložena na DataNodes. Jsou odpovědní za poskytování požadavků na čtení a zápis od klientů. Jsou také zodpovědní za vytváření bloků, mazání bloků a jejich replikaci na základě rozhodnutí přijatých NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaPŘÍZE

YARN provádí všechny vaše činnosti zpracování přidělením zdrojů a plánováním úkolů. Má dva hlavní démony, tj. ResourceManager a NodeManager .



ResourceManager

Je to komponenta na úrovni klastru (jedna pro každý klastr) a běží na hlavním počítači. Spravuje prostředky a naplánuje běh aplikací nad YARN.

NodeManager

Je to komponenta na úrovni uzlu (jedna na každém uzlu) a běží na každém podřízeném stroji. Je zodpovědný za správu kontejnerů a monitorování využití prostředků v každém kontejneru. Sleduje také stav uzlů a správu protokolů. Neustále komunikuje s ResourceManager, aby zůstal aktuální. Takže můžete provádět paralelní zpracování na HDFS pomocí MapReduce.

Chcete-li se dozvědět více o Hadoopu, projděte si toto blog. Nyní, když jsme všichni připraveni na úvod Hadoop, pojďme k úvodu Sparku.

C ++ Fibonacciho rekurzivní

Apache Spark vs Hadoop: Úvod do Apache Spark

Apache Spark je rámec pro analýzu dat v reálném čase v distribuovaném výpočetním prostředí. Provádí výpočty v paměti za účelem zvýšení rychlosti zpracování dat. Je rychlejší pro zpracování rozsáhlých dat, protože využívá výpočty v paměti a další optimalizace. Proto vyžaduje vysoký výpočetní výkon.

Resilient Distributed Dataset (RDD) je základní datová struktura Sparku. Je to neměnná distribuovaná sbírka předmětů. Každá datová sada v RDD je rozdělena do logických oddílů, které lze vypočítat na různých uzlech clusteru. RDD mohou obsahovat jakýkoli typ objektů Python, Java nebo Scala, včetně uživatelem definovaných tříd. Díky součástkám Spark je to rychlé a spolehlivé. Apache Spark má následující komponenty:

  1. Spark Core - Spark Core je základní modul pro rozsáhlé paralelní a distribuované zpracování dat. Další knihovny, které jsou postaveny na jádru, dále umožňují různé pracovní zátěže pro streamování, SQL a strojové učení. Je zodpovědný za správu paměti a zotavení po poruše, plánování, distribuci a monitorování úloh v klastru a interakci s úložnými systémy
  2. Streamování jisker - Spark Streaming je součást Spark, která se používá ke zpracování dat v reálném čase. Jedná se tedy o užitečný doplněk k jádru Spark API. Umožňuje vysoce propustné a odolné proti chybám zpracování proudu živých datových proudů
  3. Spark SQL : Spark SQL je nový modul ve Sparku, který integruje relační zpracování s funkčním programovacím API Sparku. Podporuje dotazování na data buď prostřednictvím SQL, nebo prostřednictvím Hive Query Language. Pro ty z vás, kteří jsou obeznámeni s RDBMS, bude Spark SQL snadným přechodem od vašich dřívějších nástrojů, kde můžete rozšířit hranice tradičního zpracování relačních dat.
  4. GraphX : GraphX ​​je Spark API pro grafy a paralelní výpočet. Proto rozšiřuje Spark RDD o graf pružné distribuované vlastnosti. Na vysoké úrovni GraphX ​​rozšiřuje abstrakci Spark RDD zavedením grafu odolných distribuovaných vlastností: směrovaný multigraf s vlastnostmi připojenými ke každému vrcholu a hraně.
  5. MLlib (Machine Learning): MLlib je zkratka pro Machine Learning Library. Spark MLlib se používá k provádění strojového učení v Apache Spark.

Jak vidíte, Spark je dodáván s knihovnami na vysoké úrovni, včetně podpory pro R, SQL, Python, Scala, Java atd. Tyto standardní knihovny zvyšují bezproblémovou integraci do komplexního pracovního toku. Kromě toho také umožňuje integraci různých sad služeb, jako jsou MLlib, GraphX, SQL + datové rámce, streamovací služby atd., Aby se zvýšily jeho schopnosti.

Chcete-li se dozvědět více o Apache Spark, projděte si toto blog. Nyní je vše připraveno pro Apache Spark vs Hadoop. Pojďme kupředu a porovnejme Apache Spark s Hadoop na různých parametrech, abychom pochopili jejich silné stránky.

Apache Spark vs Hadoop: Parametry k porovnání

Výkon

Spark je rychlý, protože má zpracování v paměti. Může také použít disk pro data, která se nevejdou do paměti. Zpracování v paměti společnosti Spark poskytuje analýzu téměř v reálném čase. Díky tomu je Spark vhodný pro systém zpracování kreditních karet, strojové učení, bezpečnostní analýzy a senzory internetu věcí.

Hadoop byl původně nastaven tak, aby nepřetržitě shromažďoval data z více zdrojů, aniž by se musel starat o typ dat a jejich ukládání v distribuovaném prostředí. MapReduce používá dávkové zpracování. MapReduce nebyl nikdy vytvořen pro zpracování v reálném čase, hlavní myšlenkou YARN je paralelní zpracování přes distribuovanou datovou sadu.

Problém s porovnáním těchto dvou je, že provádějí zpracování odlišně.

Snadnost použití

Spark přichází s uživatelsky přívětivými API pro Scala, Java, Python a Spark SQL. Spark SQL je velmi podobný SQL, takže vývojářům SQL se to snáze učí. Spark také poskytuje interaktivní prostředí pro vývojáře, aby mohli dotazovat a provádět další akce a mít okamžitou zpětnou vazbu.

Data v Hadoopu můžete snadno přijímat buď pomocí shellu, nebo integrací s více nástroji, jako je Sqoop, Flume atd. YARN je pouze rámec zpracování a lze jej integrovat s více nástroji, jako je Hive a Pig. HIVE je komponenta datového skladu, která provádí čtení, zápis a správu velkých datových sad v distribuovaném prostředí pomocí rozhraní podobného SQL. Můžete to projít Ekosystém Hadoop blog a dozvíte se o různých nástrojích, které lze integrovat do Hadoopu.

Náklady

Hadoop a Spark jsou oba open source projekty Apache, takže za software neplatí žádné náklady. Cena je spojena pouze s infrastrukturou. Oba produkty jsou navrženy tak, aby mohly běžet na komoditním hardwaru s nízkými TCO.

apache spark ve srovnání s hadoop mapreduce

Možná vás zajímá, jak se liší. Úložiště a zpracování v Hadoopu je založeno na disku a Hadoop využívá standardní množství paměti. U Hadoopu tedy potřebujeme spoustu místa na disku i rychlejší disky. Hadoop také vyžaduje více systémů pro distribuci I / O disku.

Kvůli zpracování paměti Apache Spark vyžaduje hodně paměti, ale dokáže si poradit se standardní rychlostí a množstvím disku. Jelikož místo na disku je relativně levná komodita a protože Spark ke zpracování nepoužívá vstupně-výstupní operace na disku, vyžaduje místo toho pro provádění všeho v paměti velké množství paměti RAM. Systém Spark tedy přináší vyšší náklady.

Ale ano, je třeba mít na paměti jednu důležitou věc, že ​​technologie společnosti Spark snižuje počet požadovaných systémů. Potřebuje podstatně méně systémů, které stojí víc. Bude tedy bod, ve kterém Spark sníží náklady na jednotku výpočtu i při požadavku na další RAM.

Zpracování dat

Existují dva typy zpracování dat: Dávkové zpracování a Streamové zpracování.

Dávkové zpracování vs zpracování proudu

Dávkové zpracování : Dávkové zpracování bylo pro svět velkých dat zásadní. Zjednodušeně řečeno, dávkové zpracování pracuje s velkými objemy dat shromážděnými za určité období. Při dávkovém zpracování se nejprve shromažďují data a poté se zpracovávají výsledky v pozdější fázi.

Dávkové zpracování je efektivní způsob zpracování velkých statických datových sad. Obecně provádíme dávkové zpracování pro archivované datové sady. Například výpočet průměrného příjmu v zemi nebo vyhodnocení změny v elektronickém obchodování za poslední desetiletí.

Zpracování streamu : Streamové zpracování je aktuální trend ve světě velkých dat. Potřeba hodiny je rychlost a informace v reálném čase, což je to, co dělá zpracování páry. Dávkové zpracování neumožňuje podnikům rychle reagovat na měnící se obchodní potřeby v reálném čase, zpracování proudu zaznamenalo rychlý růst poptávky.

Nyní se vracíme k Apache Spark vs Hadoop, YARN je v podstatě rámec dávkového zpracování. Když zadáme úlohu do YARN, přečte data z klastru, provede operaci a zapíše výsledky zpět do klastru. Pak znovu načte aktualizovaná data, provede další operaci a zapíše výsledky zpět do klastru atd.

Spark provádí podobné operace, ale používá zpracování v paměti a optimalizuje kroky. GraphX ​​umožňuje uživatelům prohlížet stejná data jako grafy a jako sbírky. Uživatelé mohou také transformovat a spojovat grafy s odolnými distribuovanými datovými sadami (RDD).

Odolnost proti chybám

Hadoop a Spark poskytují odolnost proti chybám, ale oba mají odlišný přístup. U HDFS i YARN kontrolují hlavní démoni (tj. NameNode & ResourceManager) rytmus otrockých démonů (tj. DataNode & NodeManager). Pokud některý z podřízených démonů selže, hlavní démoni přeplánují všechny nevyřízené a probíhající operace na jiného podřízeného. Tato metoda je účinná, ale může také významně prodloužit dobu dokončení operací s jedinou chybou. Protože Hadoop používá komoditní hardware, dalším způsobem, jak HDFS zajišťuje odolnost proti chybám, je replikace dat.

Jak jsme diskutovali výše, RDD jsou stavebními kameny Apache Spark. RDD poskytují Sparku odolnost proti chybám. Mohou odkazovat na jakoukoli datovou sadu přítomnou v externím úložném systému, jako je HDFS, HBase, sdílený souborový systém. Mohou být provozovány paralelně.

RDD mohou přetrvávat datovou sadu v paměti napříč operacemi, což činí budoucí akce 10krát mnohem rychlejší. Pokud dojde ke ztrátě RDD, bude automaticky přepočítán pomocí původních transformací. Takto Spark zajišťuje odolnost proti chybám.

Bezpečnostní

Hadoop podporuje ověřování pomocí protokolu Kerberos, ale je obtížné jej zvládnout. Podporuje však při ověřování také dodavatele třetích stran, jako je LDAP (Lightweight Directory Access Protocol). Nabízejí také šifrování. HDFS podporuje tradiční oprávnění k souborům i seznamy řízení přístupu (ACL). Hadoop poskytuje autorizaci na úrovni služeb, která zaručuje, že klienti mají správná oprávnění pro odesílání úloh.

Spark aktuálně podporuje ověřování pomocí sdíleného tajemství. Spark se může integrovat s HDFS a může používat HDL ACL a oprávnění na úrovni souborů. Spark může také běžet na YARN s využitím schopností Kerberos.

Případy použití, kdy Hadoop nejlépe vyhovuje:

  • Analýza archivních dat. YARN umožňuje paralelní zpracování velkého množství dat. Části dat se zpracovávají paralelně a samostatně na různých DataNodes a shromažďují výsledky z každého NodeManageru.
  • Pokud nejsou vyžadovány okamžité výsledky. Hadoop MapReduce je dobré a ekonomické řešení pro dávkové zpracování.

Případy použití, kdy se Spark hodí nejlépe:

Analýza velkých dat v reálném čase:

Analýza dat v reálném čase znamená zpracování dat generovaných proudy událostí v reálném čase přicházejícími rychlostí milionů událostí za sekundu, například data z Twitteru. Síla Sparku spočívá v jeho schopnostech podporovat streamování dat spolu s distribuovaným zpracováním. Toto je užitečná kombinace, která poskytuje zpracování dat téměř v reálném čase. MapReduce je znevýhodněn takovou výhodou, protože byl navržen k provádění hromadného distribuovaného zpracování na velkém množství dat. Data v reálném čase lze stále zpracovávat na MapReduce, ale jejich rychlost není nikde blízko rychlosti Sparku.

Spark tvrdí, že zpracovává data stokrát rychleji než MapReduce, zatímco desetkrát rychleji s disky.

Zpracování grafu:

Většina algoritmů pro zpracování grafů, jako je pořadí stránek, provádí více iterací se stejnými daty, což vyžaduje mechanismus předávání zpráv. Musíme programovat MapReduce explicitně, abychom zpracovali takovéto opakované iterace přes stejná data. Zhruba to funguje takto: Přečíst data z disku a po určité iteraci zapsat výsledky na HDFS a poté načíst data z HDFS pro další iteraci. To je velmi neefektivní, protože to zahrnuje čtení a zápis dat na disk, což zahrnuje těžké I / O operace a replikaci dat v klastru kvůli odolnosti proti chybám. Každá iterace MapReduce má také velmi vysokou latenci a další iterace může začít až po úplném dokončení předchozí úlohy.

Předávání zpráv také vyžaduje skóre sousedních uzlů, aby bylo možné vyhodnotit skóre konkrétního uzlu. Tyto výpočty potřebují zprávy od sousedů (nebo dat napříč několika fázemi úlohy), což je mechanismus, který MapReduce postrádá. Byly navrženy různé nástroje pro zpracování grafů, jako jsou Pregel a GraphLab, aby se vyřešila potřeba efektivní platformy pro algoritmy zpracování grafů. Tyto nástroje jsou rychlé a škálovatelné, ale nejsou účinné pro vytváření a následné zpracování těchto složitých vícestupňových algoritmů.

co dělá výstraha v JavaScriptu

Uvedení Apache Spark tyto problémy do značné míry vyřešilo. Spark obsahuje knihovnu pro výpočet grafů nazvanou GraphX, která zjednodušuje náš život. Výpočet v paměti spolu s vestavěnou podporou grafů zvyšuje výkon algoritmu o jeden nebo dva stupně oproti tradičním programům MapReduce. Spark používá kombinaci Netty a Akka k distribuci zpráv po exekutorech. Podívejme se na některé statistiky, které zobrazují výkon algoritmu PageRank pomocí Hadoop a Spark.

Iterativní algoritmy strojového učení:

Téměř všechny algoritmy strojového učení fungují iterativně. Jak jsme viděli dříve, iterační algoritmy zahrnují I / O úzká místa v implementacích MapReduce. MapReduce používá hrubozrnné úlohy (paralelismus na úrovni úkolů), které jsou příliš těžké pro iterativní algoritmy. Spark pomocí Mesos - distribuovaného systémového jádra, ukládá mezilehlou datovou sadu po každé iteraci a spouští více iterací na této datové sadě v mezipaměti, což snižuje I / O a pomáhá rychleji spustit algoritmus způsobem odolným proti chybám.

Spark má vestavěnou škálovatelnou knihovnu strojového učení s názvem MLlib, která obsahuje vysoce kvalitní algoritmy, které využívají iterace a přinášejí lepší výsledky než aproximace jednoho průchodu, které se někdy používají na MapReduce.

  • Rychlé zpracování dat. Jak víme, Spark umožňuje zpracování v paměti. Výsledkem je, že Spark je až 100krát rychlejší pro data v RAM a až 10krát rychlejší pro data v úložišti.
  • Iterativní zpracování. RDD společnosti Spark umožňují provádět několik mapových operací v paměti, aniž by bylo nutné zapisovat dočasné datové sady na disk.
  • Zpracování téměř v reálném čase. Spark je vynikající nástroj, který poskytuje okamžité obchodní informace. Z tohoto důvodu se Spark používá ve streamovacím systému kreditní karty.

'Apache Spark: Zabiják nebo zachránce Apache Hadoop?'

Odpověď na toto - Hadoop MapReduce a Apache Spark spolu nekonkurují. Ve skutečnosti se navzájem docela dobře doplňují. Hadoop přináší obrovské datové sady pod kontrolu komoditních systémů. Spark poskytuje zpracování v paměti v reálném čase pro ty datové sady, které to vyžadují. Když zkombinujeme schopnost Apache Spark, tj. Vysoká rychlost zpracování, pokročilá analýza a podpora vícenásobné integrace s nízkonákladovým provozem Hadoop na komoditním hardwaru, poskytuje nejlepší výsledky. Hadoop doplňuje schopnosti Apache Spark. Spark nemůže úplně nahradit Hadoop, ale dobrou zprávou je, že poptávka po Sparku je v současné době historicky nejvyšší! To je ten správný čas na to, abyste si osvojili Spark a využili možnosti kariéry, které se vám naskytnou. Začněte hned!

Máte na nás dotaz? Uveďte to prosím v sekci komentáře a my se vám ozveme nejdříve.

Pokud se chcete naučit Spark a budovat si kariéru v doméně Spark, abyste mohli provádět rozsáhlé zpracování dat pomocí RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​a Scala s případy použití v reálném životě, podívejte se na naše interaktivní živé online tady, přichází s podporou 24 * 7, která vás provede celým obdobím učení.