Spark vs Hadoop: Ktorý je najlepší rámec pre veľké dáta?



Tento príspevok v blogu hovorí o apache spark vs hadoop. Poskytne vám predstavu o tom, aký je správny rámec Big Data pre výber v rôznych scenároch.

Tento blog Apache Spark vs Hadoop začnem tým, že najskôr predstavím programy Hadoop a Spark, aby som nastavil správny kontext pre oba rámce. Ďalej budeme porovnávať oba rámce Big Data s rôznymi parametrami a analyzovať ich silné a slabé stránky.Nech už však bude výsledkom nášho porovnania akýkoľvek výsledok, mali by ste vedieť, že Spark aj Hadoop sú rozhodujúcou súčasťou .

Apache Spark vs Hadoop: Úvod do Hadoopu

Hadoop je rámec, ktorý vám umožňuje najskôr ukladať veľké dáta v distribuovanom prostredí, aby ste ich mohli paralelne spracovať. Hadoop má v zásade dve zložky:





HDFS

HDFS vytvára abstrakciu zdrojov, dovoľte mi to pre vás zjednodušiť. Podobne ako pri virtualizácii môžete HDFS logicky vidieť ako jednu jednotku na ukladanie veľkých dát, ale v skutočnosti ukladáte svoje dáta na viacerých uzloch distribuovaným spôsobom. Tu máte architektúru master-slave. V HDFS je Namenode hlavným uzlom a datanódy sú otrokmi.

NameNode

Je to hlavný démon, ktorý udržiava a spravuje DataNodes (podriadené uzly). Zaznamenáva metadáta všetkých súborov uložených v klastri, napr. umiestnenie uložených blokov, veľkosť súborov, povolenia, hierarchia atď. Zaznamenáva každú každú zmenu, ktorá sa uskutoční v metadátach súborového systému.



Napríklad, ak je súbor vymazaný v HDFS, NameNode to okamžite zaznamená do EditLogu. Pravidelne prijíma správu Heartbeat a správu o bloku od všetkých DataNodes v klastri, aby sa zaistilo, že DataNodes sú aktívne. Vedie záznam o všetkých blokoch v HDFS a o tom, v ktorých uzloch sú tieto bloky uložené.

DataNode

Toto sú otrockí démoni, ktorí bežia na každom otrokárskom stroji. Skutočné údaje sa ukladajú na serveri DataNodes. Sú zodpovední za poskytovanie požiadaviek klientov na čítanie a zápis. Sú tiež zodpovední za vytváranie blokov, mazanie blokov a ich replikáciu na základe rozhodnutí prijatých NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaPRIADZE

YARN vykonáva všetky vaše spracovateľské činnosti prideľovaním zdrojov a plánovaním úloh. Má dvoch hlavných démonov, t.j. ResourceManager a NodeManager .



ResourceManager

Je to komponent na úrovni klastra (jeden pre každý klaster) a beží na hlavnom počítači. Spravuje zdroje a naplánuje spustenie aplikácií nad hodnotu YARN.

NodeManager

Je to komponent na úrovni uzla (jeden na každom uzle) a beží na každom podradenom stroji. Je zodpovedný za správu kontajnerov a monitorovanie využívania zdrojov v každom kontajneri. Tiež sleduje stav uzlov a správu protokolov. Neustále komunikuje s ResourceManagerom, aby bol stále aktuálny. Takže môžete vykonávať paralelné spracovanie na HDFS pomocou MapReduce.

Ak sa chcete dozvedieť viac informácií o aplikácii Hadoop, môžete si prejsť týmto blog. Teraz, keď sme všetci pripravení na úvod do programu Hadoop, prejdime k predstaveniu programu Spark.

reťazec java rozdeliť regulárny výraz viac oddeľovačov

Apache Spark vs Hadoop: Úvod do Apache Spark

Apache Spark je rámec pre analýzu údajov v reálnom čase v prostredí distribuovanej výpočtovej techniky. Vykonáva výpočty v pamäti na zvýšenie rýchlosti spracovania údajov. Je to rýchlejšie spracovanie údajov vo veľkom meradle, pretože využíva výpočty v pamäti a ďalšie optimalizácie. Preto vyžaduje vysoký výkon spracovania.

Resilient Distributed Dataset (RDD) je základná dátová štruktúra programu Spark. Je to nemenná distribuovaná zbierka predmetov. Každá množina údajov v RDD je rozdelená do logických oddielov, ktoré je možné vypočítať na rôznych uzloch klastra. RDD môžu obsahovať akýkoľvek typ objektov Pythonu, Javy alebo Scaly, vrátane užívateľsky definovaných tried. Vďaka komponentom Spark je to rýchle a spoľahlivé. Apache Spark má nasledujúce komponenty:

  1. Spark Core - Spark Core je základný motor pre rozsiahle paralelné a distribuované spracovanie údajov. Ďalej, ďalšie knižnice, ktoré sú postavené na jadre, umožňujú rôzne pracovné zaťaženia pre streamovanie, SQL a strojové učenie. Je zodpovedný za správu pamäte a zotavenie po poruche, plánovanie, distribúciu a monitorovanie úloh v klastri a interakciu s úložnými systémami
  2. Streamovanie iskier - Spark Streaming je komponenta Spark, ktorá sa používa na spracovanie streamovacích údajov v reálnom čase. Je to teda užitočný doplnok k jadru Spark API. Umožňuje vysokovýkonné a na chyby odolné streamové spracovanie živých dátových tokov
  3. Spark SQL : Spark SQL je nový modul v aplikácii Spark, ktorý integruje relačné spracovanie s funkčným programovacím rozhraním Spark. Podporuje dopytovanie údajov buď prostredníctvom SQL, alebo prostredníctvom jazyka Hive Query Language. Pre tých, ktorí ovládajú RDBMS, bude Spark SQL ľahkým prechodom od vašich predchádzajúcich nástrojov, kde môžete rozšíriť hranice tradičného spracovania relačných údajov.
  4. GraphX : GraphX ​​je Spark API pre grafy a paralelné výpočty. Preto rozširuje Spark RDD o graf pružného distribuovaného majetku. Na vysokej úrovni GraphX ​​rozširuje abstrakciu Spark RDD zavedením grafu odolných distribuovaných vlastností: smerovaný multigraf s vlastnosťami pripojenými ku každému vrcholu a hrane.
  5. MLlib (Machine Learning): MLlib je skratka pre Machine Learning Library. Spark MLlib sa používa na vykonávanie strojového učenia v Apache Spark.

Ako vidíte, Spark je dodávaný s knižnicami na vysokej úrovni vrátane podpory pre R, SQL, Python, Scala, Java atď. Tieto štandardné knižnice zvyšujú bezproblémovú integráciu v zložitom pracovnom toku. Cez to tiež umožňuje integráciu rôznych súborov služieb, ako sú MLlib, GraphX, SQL + dátové rámce, streamovacie služby atď., Aby sa zvýšili jeho schopnosti.

Ak sa chcete dozvedieť viac informácií o serveri Apache Spark, môžete si prečítať toto blog. Teraz je už všetko pripravené pre Apache Spark vs Hadoop. Poďme ďalej a porovnajme Apache Spark s Hadoop pri rôznych parametroch, aby sme pochopili ich silné stránky.

Apache Spark vs Hadoop: Parametre na porovnanie

Výkon

Spark je rýchly, pretože má spracovanie v pamäti. Môže tiež použiť disk na údaje, ktoré sa všetky nezmestia do pamäte. Sparkovo spracovanie v pamäti poskytuje analýzu takmer v reálnom čase. Vďaka tomu je Spark vhodný pre systém spracovania kreditných kariet, strojové učenie, bezpečnostné analýzy a senzory internetu vecí.

Program Hadoop bol pôvodne nastavený tak, aby neustále zhromažďoval údaje z viacerých zdrojov bez obáv z typu údajov a ich ukladania v distribuovanom prostredí. MapReduce používa dávkové spracovanie. MapReduce nebol nikdy vyrobený pre spracovanie v reálnom čase, hlavnou myšlienkou YARN je paralelné spracovanie cez distribuovaný súbor údajov.

Problém pri porovnaní týchto dvoch je, že vykonávajú spracovanie odlišne.

Jednoduchosť použitia

Spark je dodávaný s užívateľsky prívetivými API pre Scala, Java, Python a Spark SQL. Spark SQL je veľmi podobný SQL, takže vývojári SQL sa ho ľahšie naučia. Spark tiež poskytuje interaktívne prostredie pre vývojárov, aby mohli dopytovať a vykonávať ďalšie akcie a mať okamžitú spätnú väzbu.

Dáta v Hadoope môžete prijímať ľahko pomocou shellu alebo ich integrácie s viacerými nástrojmi ako Sqoop, Flume atď. YARN je iba rámec spracovania a je možné ho integrovať do viacerých nástrojov ako Hive a Pig. HIVE je komponent dátového skladu, ktorý vykonáva čítanie, zápis a správu veľkých súborov dát v distribuovanom prostredí pomocou rozhrania podobného na SQL. Môžete si tým prejsť Ekosystém Hadoop Ak chcete vedieť viac o rôznych nástrojoch, ktoré je možné integrovať do softvéru Hadoop, blogujte.

Náklady

Hadoop a Spark sú projekty Apache s otvoreným zdrojovým kódom, takže softvér nevyžaduje žiadne náklady. Náklady sú spojené iba s infraštruktúrou. Oba produkty sú navrhnuté tak, aby mohli bežať na komoditnom hardvéri s nízkymi TCO.

príklad statického bloku v jave

Možno si teraz kladiete otázku, ako sa líšia. Ukladanie a spracovanie v aplikácii Hadoop je založené na disku a program Hadoop využíva štandardné množstvo pamäte. Takže s Hadoop potrebujeme veľa miesta na disku, rovnako ako rýchlejšie disky. Hadoop tiež vyžaduje viac systémov na distribúciu I / O disku.

Kvôli spracovaniu pamäte Apache Spark vyžaduje veľa pamäte, ale dokáže si poradiť so štandardnou rýchlosťou a množstvom disku. Pretože miesto na disku je relatívne lacná komodita a keďže Spark nepoužíva na spracovanie disky I / O, vyžaduje na vykonanie všetkého v pamäti veľké množstvo pamäte RAM. Preto systému Spark vznikajú vyššie náklady.

Ale áno, treba pamätať na jednu dôležitú vec, že ​​technológia spoločnosti Spark znižuje počet požadovaných systémov. Potrebuje podstatne menej systémov, ktoré stoja viac. Bude teda bod, v ktorom Spark zníži náklady na jednotku výpočtu aj pri dodatočnej požiadavke na RAM.

Spracovanie dát

Existujú dva typy spracovania údajov: Dávkové spracovanie a Streamové spracovanie.

Dávkové spracovanie vs streamové spracovanie

Dávkové spracovanie : Dávkové spracovanie bolo pre svet veľkých dát zásadné. Zjednodušene povedané, dávkové spracovanie pracuje s veľkým objemom údajov zhromaždeným za určité obdobie. Pri hromadnom spracovaní sa najskôr zhromažďujú údaje a potom sa výsledky spracúvajú v neskoršej fáze.

Dávkové spracovanie je efektívny spôsob spracovania veľkých súborov statických údajov. Spravidla vykonávame dávkové spracovanie pre súbory archivovaných údajov. Napríklad výpočet priemerného príjmu krajiny alebo vyhodnotenie zmeny v elektronickom obchode za posledné desaťročie.

Spracovanie streamu : Streamové spracovanie je súčasný trend vo svete veľkých dát. Hodinou je potreba rýchlosti a informácií v reálnom čase, čo robí spracovanie parou. Dávkové spracovanie neumožňuje podnikom rýchlo reagovať na meniace sa obchodné potreby v reálnom čase, prúdové spracovanie zaznamenalo rýchly rast dopytu.

Teraz sa vraciame k Apache Spark vs Hadoop, YARN je v podstate rámec pre dávkové spracovanie. Keď zadáme úlohu do PRIADY, číta dáta z klastra, vykoná operáciu a zapíše výsledky späť do klastra. Potom znova načíta aktualizované údaje, vykoná ďalšiu operáciu a zapíše výsledky späť do klastra atď.

Spark vykonáva podobné operácie, ale využíva spracovanie v pamäti a optimalizuje kroky. GraphX ​​umožňuje používateľom zobraziť rovnaké údaje ako grafy a ako zbierky. Používatelia môžu tiež transformovať a spájať grafy s odolnými distribuovanými množinami údajov (RDD).

Odolnosť proti chybám

Hadoop a Spark poskytujú odolnosť proti chybám, ale obidva majú odlišný prístup. V prípade HDFS aj YARN kontrolujú hlavní démoni (t. J. NameNode & ResourceManager) srdcový rytmus otrockých démonov (t. J. DataNode & NodeManager). Ak zlyhá ktorýkoľvek podriadený démon, hlavné démoni preplánujú všetky čakajúce a prebiehajúce operácie na iného podriadeného. Táto metóda je efektívna, ale môže tiež výrazne predĺžiť časy dokončenia pri operáciách aj pri jednom zlyhaní. Pretože Hadoop používa komoditný hardvér, ďalším spôsobom, ako HDFS zaisťuje odolnosť proti chybám, je replikácia údajov.

Ako sme už diskutovali vyššie, RDD sú stavebnými kameňmi Apache Spark. RDD poskytujú Sparku odolnosť voči chybám. Môžu sa odvolávať na akýkoľvek súbor údajov prítomný v externom úložnom systéme, ako napríklad HDFS, HBase, zdieľaný súborový systém. Môžu byť prevádzkované paralelne.

RDD môžu udržiavať súbor údajov v pamäti naprieč operáciami, čo robí budúce akcie 10-krát oveľa rýchlejšie. Ak sa RDD stratí, automaticky sa prepočíta pomocou pôvodných transformácií. Takto poskytuje Spark odolnosť proti chybám.

Bezpečnosť

Hadoop podporuje autentifikáciu Kerberos, ale je ťažké ju zvládnuť. Napriek tomu podporuje pri autentifikácii aj dodávateľov tretích strán, ako je LDAP (Lightweight Directory Access Protocol). Ponúkajú tiež šifrovanie. HDFS podporuje tradičné oprávnenie súborov, ako aj zoznamy riadenia prístupu (ACL). Spoločnosť Hadoop poskytuje autorizáciu na úrovni služieb, ktorá zaručuje, že klienti majú správne povolenia na odosielanie úloh.

Spark momentálne podporuje autentifikáciu pomocou zdieľaného tajomstva. Spark sa môže integrovať s HDFS a môže používať zoznamy prístupových práv HDFS a povolenia na úrovni súborov. Spark môže tiež bežať na YARN a využívať tak schopnosť protokolu Kerberos.

Prípady použitia, kde Hadoop najlepšie vyhovuje:

  • Analýza archívnych údajov. YARN umožňuje paralelné spracovanie veľkého množstva údajov. Časti údajov sa spracúvajú paralelne a osobitne na rôznych DataNodes a zhromažďujú výsledky z každého NodeManagera.
  • Ak nie sú potrebné okamžité výsledky. Hadoop MapReduce je dobré a ekonomické riešenie pre dávkové spracovanie.

Príklady použitia, kde sa Spark hodí najlepšie:

Analýza veľkých dát v reálnom čase:

Analýza údajov v reálnom čase znamená spracovanie údajov generovaných prúdmi udalostí v reálnom čase prichádzajúcich rýchlosťou miliónov udalostí za sekundu, napríklad údaje z Twitteru. Sila Sparku spočíva v jeho schopnostiach podporovať streamovanie údajov spolu s distribuovaným spracovaním. Toto je užitočná kombinácia, ktorá umožňuje spracovanie údajov takmer v reálnom čase. MapReduce je znevýhodnený takou výhodou, že bol navrhnutý na vykonávanie dávkového cum distribuovaného spracovania na veľkom množstve dát. Údaje v reálnom čase je možné naďalej spracovávať na MapReduce, ale ich rýchlosť sa ani zďaleka nezhoduje s rýchlosťou Sparku.

Spark tvrdí, že údaje spracováva stokrát rýchlejšie ako MapReduce, zatiaľ čo s diskami 10-krát rýchlejšie.

Spracovanie grafu:

Väčšina algoritmov na spracovanie grafov, ako je napríklad hodnotenie stránky, vykonáva viac iterácií s rovnakými údajmi, čo si vyžaduje mechanizmus odovzdávania správ. Musíme explicitne naprogramovať MapReduce, aby sme zvládli také viacnásobné iterácie s rovnakými údajmi. Zhruba to funguje takto: Načítajte údaje z disku a po konkrétnej iterácii zapíšte výsledky do HDFS a potom načítajte údaje z HDFS pre ďalšiu iteráciu. To je veľmi neefektívne, pretože to zahŕňa čítanie a zápis údajov na disk, čo zahŕňa náročné I / O operácie a replikáciu údajov v rámci klastra kvôli odolnosti voči chybám. Každá iterácia MapReduce má tiež veľmi vysokú latenciu a ďalšia iterácia môže začať až po úplnom dokončení predchádzajúcej úlohy.

Aj odovzdávanie správ vyžaduje skóre susedných uzlov, aby sa dalo vyhodnotiť skóre konkrétneho uzla. Tieto výpočty potrebujú správy od susedov (alebo údaje z viacerých fáz práce), čo je mechanizmus, ktorý MapReduce chýba. Boli vyvinuté rôzne nástroje na spracovanie grafov, ako sú Pregel a GraphLab, aby sa uspokojila potreba efektívnej platformy pre algoritmy na spracovanie grafov. Tieto nástroje sú rýchle a škálovateľné, ale nie sú efektívne pri vytváraní a následnom spracovaní týchto zložitých viacstupňových algoritmov.

html značka pre vloženie zalomenia riadku

Uvedenie Apache Spark tieto problémy do značnej miery vyriešilo. Spark obsahuje knižnicu na výpočet grafov s názvom GraphX, ktorá nám zjednodušuje život. Výpočet v pamäti spolu s integrovanou podporou grafov zvyšuje výkon algoritmu o jeden alebo dva stupne v porovnaní s tradičnými programami MapReduce. Spark používa kombináciu Netty a Akka na distribúciu správ medzi exekútormi. Pozrime sa na niektoré štatistiky, ktoré zobrazujú výkonnosť algoritmu PageRank pomocou nástrojov Hadoop a Spark.

Iteratívne algoritmy strojového učenia:

Takmer všetky algoritmy strojového učenia pracujú iteratívne. Ako sme už videli skôr, iteračné algoritmy zahŕňajú I / O úzke miesta v implementáciách MapReduce. MapReduce používa hrubozrnné úlohy (paralelizmus na úrovni úloh), ktoré sú pre iteračné algoritmy príliš ťažké. Aplikácia Spark pomocou jadra distribuovaného systému Mesos uloží po každej iterácii medzipamäťovú množinu údajov a na tejto medzipamäťovej množine údajov spustí viac iterácií, čo zníži I / O a pomôže algoritmu rýchlejšie pracovať spôsobom odolným voči chybám.

Spark má vstavanú škálovateľnú knižnicu strojového učenia s názvom MLlib, ktorá obsahuje vysoko kvalitné algoritmy, ktoré využívajú iterácie a prinášajú lepšie výsledky ako jednopriechodové aproximácie, ktoré sa niekedy používajú na MapReduce.

  • Rýchle spracovanie údajov. Ako vieme, Spark umožňuje spracovanie v pamäti. Výsledkom je, že Spark je až 100-krát rýchlejší pre dáta v RAM a až 10-krát rýchlejší pre dáta v úložisku.
  • Iteratívne spracovanie. Sparkove RDD umožňujú vykonávanie niekoľkých mapových operácií v pamäti, bez potreby zapisovania dočasných množín údajov na disk.
  • Spracovanie takmer v reálnom čase. Spark je vynikajúci nástroj na poskytnutie okamžitých obchodných informácií. To je dôvod, prečo sa Spark používa v streamovacom systéme kreditnej karty.

'Apache Spark: Zabijak alebo Spasiteľ Apache Hadoop?'

Odpoveď na túto otázku - Hadoop MapReduce a Apache Spark navzájom nekonkurujú. V skutočnosti sa celkom dobre dopĺňajú. Hadoop prináša obrovské dátové súbory pod kontrolu komoditnými systémami. Spark poskytuje spracovanie v pamäti v reálnom čase pre tie súbory údajov, ktoré to vyžadujú. Keď skombinujeme schopnosť Apache Spark, tj. Vysoká rýchlosť spracovania, pokročilá analýza a podpora viacerých integrácií s nízkonákladovou prevádzkou spoločnosti Hadoop na komoditnom hardvéri, poskytuje najlepšie výsledky. Hadoop dopĺňa schopnosti Apache Spark. Spark nemôže úplne nahradiť Hadoop, ale dobrou správou je, že dopyt po Sparku je momentálne na historicky vysokej úrovni! Toto je ten pravý čas na to, aby ste si osvojili Spark a využili čo najlepšie kariérne príležitosti, ktoré sa vám naskytnú. Začni teraz!

Máte na nás otázku? Uveďte to prosím v sekcii komentárov a my sa vám ozveme najskôr.

Ak sa chcete naučiť spoločnosti Spark a budovať si kariéru v doméne spoločnosti Spark, aby ste mohli vykonávať rozsiahle spracovanie údajov pomocou RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​a Scala s prípadmi použitia v reálnom živote, pozrite si naše interaktívne online vysielanie online. tu, ktorá je dodávaná s podporou 24 * 7, ktorá vás prevedie celým vzdelávacím obdobím.