Spark vs Hadoop: Kateri je najboljši okvir za velike podatke?



Ta objava v blogu govori o apache spark vs hadoop. Dala vam bo predstavo o tem, kateri je pravi okvir velikih podatkov, ki ga lahko izberete v različnih scenarijih.

Ta blog Apache Spark vs Hadoop bom začel tako, da najprej predstavim Hadoop in Spark, da določim pravi kontekst za oba okvira. Nato bomo v nadaljevanju primerjali ogrodja velikih podatkov za različne parametre in analizirali njihove prednosti in slabosti.Ne glede na rezultat naše primerjave pa morate vedeti, da sta Spark in Hadoop ključna sestavna dela .

kako izvesti hashmap

Apache Spark vs Hadoop: Uvod v Hadoop

Hadoop je ogrodje, ki vam omogoča, da najprej shranite velike podatke v porazdeljenem okolju, tako da jih lahko vzporedno obdelate. V bistvu sta v Hadoopu dve komponenti:





HDFS

HDFS ustvari abstrakcijo virov, naj vam jo poenostavim. Podobno kot virtualizacija lahko tudi HDFS logično vidite kot eno samo enoto za shranjevanje velikih podatkov, dejansko pa podatke hranite v več vozliščih na porazdeljen način. Tukaj imate arhitekturo master-slave. V HDFS je Namenode glavno vozlišče, datanode pa sužnji.

NameNode

Glavni demon je tisti, ki vzdržuje in upravlja DataNodes (podrejena vozlišča). Zapiše metapodatke vseh datotek, shranjenih v gruči, npr. lokacija shranjenih blokov, velikost datotek, dovoljenja, hierarhija itd. Zabeleži vsako spremembo metapodatkov datotečnega sistema.



Če na primer datoteko izbrišete v HDFS, bo NameNode to takoj zabeležil v dnevniku EditLog. Redno prejema Heartbeat in poročilo o blokadi vseh DataNodes v gruči, da zagotovi, da DataNodes živijo. Hrani evidenco vseh blokov v HDFS in v katerih vozliščih so ti bloki shranjeni.

DataNode

To so podrejeni demoni, ki se izvajajo na vsakem podrejenem računalniku. Dejanski podatki so shranjeni na DataNodes. Odgovorni so za vročanje zahtev strankam za branje in pisanje. Odgovorni so tudi za ustvarjanje blokov, brisanje blokov in njihovo kopiranje na podlagi odločitev, ki jih sprejme NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaPREJA

YARN izvaja vse vaše dejavnosti obdelave z dodeljevanjem virov in razporejanjem nalog. Ima dva glavna demona, tj. ResourceManager in NodeManager .



ResourceManager

Je komponenta na ravni gruče (po ena za vsako skupino) in deluje na glavnem računalniku. Upravlja vire in razporeja programe, ki se izvajajo na vrhu YARN.

NodeManager

Je komponenta na ravni vozlišča (po ena na vsakem vozlišču) in deluje na vsakem podrejenem računalniku. Odgovoren je za upravljanje zabojnikov in spremljanje porabe virov v vsakem zabojniku. Prav tako beleži zdravje vozlišč in upravljanje dnevnikov. Nenehno komunicira z ResourceManagerjem, da ostane na tekočem. Torej lahko izvajate vzporedno obdelavo na HDFS z uporabo MapReduce.

Če želite izvedeti več o Hadoopu, lahko to preberete blog. Zdaj, ko smo že pripravljeni na predstavitev Hadoop, pojdimo na uvod v Spark.

Apache Spark vs Hadoop: Uvod v Apache Spark

Apache Spark je okvir za analizo podatkov v realnem času v porazdeljenem računalniškem okolju. Izvaja izračune v pomnilniku za povečanje hitrosti obdelave podatkov. Hitreje je za obdelavo obsežnih podatkov, saj izkorišča izračune v pomnilniku in druge optimizacije. Zato zahteva visoko procesorsko moč.

Prožni distribuirani nabor podatkov (RDD) je temeljna podatkovna struktura Sparka. Je nespremenljiva porazdeljena zbirka predmetov. Vsak nabor podatkov v RDD je razdeljen na logične particije, ki jih je mogoče izračunati na različnih vozliščih gruče. RDD-ji lahko vsebujejo katero koli vrsto objektov Python, Java ali Scala, vključno z uporabniško določenimi razredi. Sestavni deli Spark so hitri in zanesljivi. Apache Spark ima naslednje komponente:

  1. Spark Core - Spark Core je osnovni motor za obsežno vzporedno in porazdeljeno obdelavo podatkov. Poleg tega dodatne knjižnice, ki so zgrajene nad jedrom, omogočajo različne obremenitve za pretakanje, SQL in strojno učenje. Odgovoren je za upravljanje pomnilnika in odpravljanje napak, razporejanje, distribucijo in spremljanje opravil v gruči ter interakcijo s sistemi za shranjevanje
  2. Spark Streaming - Spark Streaming je komponenta Spark, ki se uporablja za obdelavo pretočnih podatkov v realnem času. Tako je koristen dodatek jedru API Spark. Omogoča visoko pretočno in odporno obdelavo tokov podatkovnih tokov v živo
  3. Spark SQL : Spark SQL je nov modul v programu Spark, ki vključuje relacijsko obdelavo z API-jem za funkcionalno programiranje Spark. Podpira poizvedovanje po podatkih prek SQL ali prek jezika poizvedb Hive. Za tiste, ki poznate RDBMS, bo Spark SQL enostaven prehod s prejšnjih orodij, kjer lahko razširite meje tradicionalne relacijske obdelave podatkov.
  4. GraphX : GraphX ​​je API Spark za grafe in vzporedno izračunavanje grafov. Tako razširja RDD Spark z elastičnim grafom porazdeljene lastnosti. Na visoki ravni GraphX ​​razširja abstrakcijo Spark RDD z uvedbo Resilient Distributed Property Graph: usmerjenega multigrafa z lastnostmi, pritrjenimi na vsako oglišče in rob.
  5. MLlib (Strojno učenje): MLlib pomeni knjižnica strojnega učenja. Spark MLlib se uporablja za strojno učenje v Apache Spark.

Kot lahko vidite, je Spark opremljen s knjižnicami na visoki ravni, vključno s podporo za R, SQL, Python, Scala, Java itd. Te standardne knjižnice povečajo nemoteno integracijo v zapletenem delovnem toku. Poleg tega omogoča tudi povezovanje različnih sklopov storitev, kot so MLlib, GraphX, SQL + Data Frames, storitve pretakanja itd., Da povečajo svoje zmogljivosti.

Če želite izvedeti več o Apache Spark, lahko to preberete blog. Zdaj je vse pripravljeno za Apache Spark in Hadoop. Gremo naprej in primerjajmo Apache Spark s Hadoopom na različnih parametrih, da bomo razumeli njihove prednosti.

Apache Spark vs Hadoop: Parametri za primerjavo

Izvedba

Spark je hiter, ker ima obdelavo v pomnilniku. Disk lahko uporablja tudi za podatke, ki niso vsi v pomnilniku. Sparkova obdelava v pomnilniku zagotavlja skoraj sprotno analitiko. Zaradi tega je Spark primeren za sistem za obdelavo kreditnih kartic, strojno učenje, varnostno analitiko in senzorje interneta stvari.

Hadoop je bil prvotno nastavljen tako, da neprestano zbira podatke iz več virov, ne da bi skrbel za vrsto podatkov in jih shranil v porazdeljenem okolju. MapReduce uporablja paketno obdelavo. MapReduce ni bil nikoli zgrajen za obdelavo v realnem času, glavna ideja YARN pa je vzporedna obdelava nad porazdeljenim naborom podatkov.

Težava pri primerjavi obeh je v tem, da različno izvajata obdelavo.

Enostavnost uporabe

Spark prihaja z uporabnikom prijaznimi API-ji za Scala, Java, Python in Spark SQL. Spark SQL je zelo podoben SQL-u, zato se razvijalci SQL lažje naučijo. Spark ponuja tudi interaktivno lupino, s katero lahko razvijalci poizvedujejo in izvajajo druga dejanja ter imajo takojšnje povratne informacije.

Podatke v Hadoop lahko preprosto zaužijete, tako da uporabite lupino ali jih integrirate z več orodji, kot so Sqoop, Flume itd. PREJA je le okvir za obdelavo in jo je mogoče integrirati z več orodji, kot sta panj in prašič. HIVE je komponenta za skladiščenje podatkov, ki izvaja branje, pisanje in upravljanje velikih naborov podatkov v porazdeljenem okolju z uporabo vmesnika, podobnega SQL. Lahko greš skozi to Hadoop ekosistem blog, če želite vedeti o različnih orodjih, ki jih je mogoče integrirati s Hadoop.

Stroški

Hadoop in Spark sta Apachejeva odprtokodna projekta, zato programske opreme ni treba plačati. Stroški so povezani samo z infrastrukturo. Oba izdelka sta zasnovana tako, da lahko deluje na osnovni strojni opremi z nizkim TCO.

Zdaj se morda sprašujete, na kakšen način se razlikujejo. Shranjevanje in obdelava v Hadoopu temelji na disku in Hadoop uporablja standardne količine pomnilnika. Torej, s Hadoop potrebujemo veliko prostora na disku, pa tudi hitrejše diske. Hadoop zahteva tudi več sistemov za distribucijo diskovnih V / I.

Zaradi obdelave pomnilnika Apache Spark potrebuje veliko pomnilnika, vendar se lahko spopade s standardno hitrostjo in količino diska. Ker je prostor na disku razmeroma poceni izdelek in ker Spark za obdelavo ne uporablja vhodno / izhodnih diskov, namesto tega zahteva veliko RAM-a za izvajanje vsega v pomnilniku. Tako sistem Spark povzroča več stroškov.

A ja, ena pomembna stvar, ki jo je treba upoštevati, je, da Sparkova tehnologija zmanjšuje število zahtevanih sistemov. Potrebuje bistveno manj sistemov, ki stanejo več. Torej bo prišlo do točke, ko bo Spark znižal stroške na enoto računanja tudi z dodatnimi zahtevami po RAM-u.

Obdelava podatkov

Obstajata dve vrsti obdelave podatkov: paketna obdelava in pretočna obdelava.

Šaržna obdelava v primerjavi s pretočno obdelavo

Šaržna obdelava : Serijska obdelava je bila ključnega pomena za svet velikih podatkov. Preprosto rečeno, šaržna obdelava deluje z velikimi količinami podatkov, zbranimi v določenem obdobju. Pri serijski obdelavi se najprej zberejo podatki, nato pa se kasneje dobijo obdelani rezultati.

Šaržna obdelava je učinkovit način obdelave velikih, statičnih naborov podatkov. Na splošno izvajamo paketno obdelavo arhiviranih naborov podatkov. Na primer, izračun povprečnega dohodka države ali vrednotenje sprememb v elektronskem poslovanju v zadnjem desetletju.

Obdelava toka : Pretočna obdelava je trenutni trend v svetu velikih podatkov. Potreba po uri je hitrost in informacije v realnem času, kar počne obdelava pare. Serijska obdelava podjetjem ne omogoča hitrega odzivanja na spreminjajoče se poslovne potrebe v realnem času, v pretočni obdelavi pa je hitro povpraševanje.

Zdaj, ko se vračamo k Apache Spark vs Hadoop, je YARN v bistvu okvir za paketno obdelavo. Ko pošljemo opravilo YARN, prebere podatke iz gruče, izvede operacijo in rezultate zapiše nazaj v gručo. Nato spet prebere posodobljene podatke, izvede naslednjo operacijo in rezultate zapiše nazaj v skupino itd.

Spark izvaja podobne operacije, vendar uporablja obdelavo v pomnilniku in optimizira korake. GraphX ​​omogoča uporabnikom, da si ogledajo enake podatke kot grafi in kot zbirke. Uporabniki lahko tudi transformirajo in združujejo grafe z elastičnimi porazdeljenimi nabori podatkov (RDD).

Toleranca napak

Hadoop in Spark zagotavljata odpornost na napake, vendar imata oba različen pristop. Za oba HDFS in YARN glavni demon (tj. NameNode oziroma ResourceManager) preverja srčni utrip podrejenih demonov (tj. DataNode in NodeManager). Če kateri od pomožnih demonov ne uspe, glavni demoni prerazporedijo vse čakajoče in tekoče operacije na drugega suženja. Ta metoda je učinkovita, vendar lahko znatno podaljša čas zaključka tudi za operacije z eno samo okvaro. Ker Hadoop uporablja osnovno strojno opremo, HDFS zagotavlja odpornost na napake tudi s kopiranjem podatkov.

Kot smo že omenili, so RDD gradniki Apache Spark. RDD-ji zagotavljajo odpornost Spark na napake. Lahko se nanašajo na kateri koli nabor podatkov, ki je prisoten v zunanjem pomnilniškem sistemu, kot so HDFS, HBase, skupni datotečni sistem. Lahko delujejo vzporedno.

RDD-ji lahko ohranijo nabor podatkov v pomnilniku med posameznimi operacijami, zaradi česar so prihodnja dejanja 10-krat hitrejša. Če se RDD izgubi, se samodejno ponovno izračuna z uporabo prvotnih transformacij. Tako Spark zagotavlja odpornost na napake.

Varnost

Hadoop podpira Kerberos za preverjanje pristnosti, vendar je s tem težko ravnati. Kljub temu pa za preverjanje pristnosti podpira tudi neodvisne ponudnike, kot je LDAP (Lightweight Directory Access Protocol). Ponujajo tudi šifriranje. HDFS podpira tradicionalna dovoljenja za datoteke in sezname za nadzor dostopa (ACL). Hadoop ponuja pooblastilo na ravni storitve, ki strankam zagotavlja ustrezna dovoljenja za oddajo del.

Spark trenutno podpira preverjanje pristnosti prek skupne skrivnosti. Spark se lahko integrira s HDFS in lahko uporablja ACL-je HDFS in dovoljenja na ravni datotek. Spark lahko deluje tudi na YARN, ki izkorišča zmogljivosti Kerberosa.

Primeri uporabe, kjer se Hadoop najbolje prilega:

  • Analiza arhivskih podatkov. YARN omogoča vzporedno obdelavo ogromnih količin podatkov. Deli podatkov se obdelujejo vzporedno in ločeno na različnih DataNodes in zbirajo rezultate iz vsakega NodeManagerja.
  • Če takojšnji rezultati niso potrebni. Hadoop MapReduce je dobra in ekonomična rešitev za serijsko obdelavo.

Primeri uporabe, kjer se Spark najbolje prilega:

Analiza velikih podatkov v realnem času:

Analiza podatkov v realnem času pomeni obdelavo podatkov, ki jih ustvarijo tokovi dogodkov v realnem času, ki prihajajo s hitrostjo milijonov dogodkov na sekundo, na primer Twitter podatki. Moč Sparka je v njegovih zmožnostih, da podpira pretakanje podatkov skupaj z porazdeljeno obdelavo. To je koristna kombinacija, ki zagotavlja skoraj sprotno obdelavo podatkov. MapReduce je prikrajšan za tako prednost, saj je bil zasnovan za izvedbo serijske obdelave, porazdeljene po velikih količinah podatkov. Podatke v realnem času je še vedno mogoče obdelovati na MapReduce, vendar njegova hitrost še zdaleč ni hitra kot Spark.

Spark trdi, da podatke obdeluje 100-krat hitreje kot MapReduce, medtem ko z diski 10-krat hitreje.

Obdelava grafa:

Večina algoritmov za obdelavo grafov, kot je rank strani, izvaja več ponovitev v istih podatkih, kar zahteva mehanizem za posredovanje sporočil. MapReduce moramo izrecno programirati za obdelavo takšnih več ponovitev nad istimi podatki. Približno deluje tako: preberite podatke z diska in po določeni ponovitvi zapišite rezultate v HDFS in nato preberite podatke iz HDFS za naslednjo ponovitev. To je zelo neučinkovito, saj vključuje branje in zapisovanje podatkov na disk, kar vključuje težke V / I operacije in kopiranje podatkov v gruči zaradi odpornosti na napake. Prav tako ima vsaka ponovitev MapReduce zelo veliko zakasnitev, naslednja ponovitev pa se lahko začne šele po končanem predhodnem opravilu.

Tudi za pošiljanje sporočil so potrebne ocene sosednjih vozlišč, da se oceni rezultat določenega vozlišča. Ti izračuni potrebujejo sporočila svojih sosedov (ali podatke v več fazah opravila), mehanizem, ki ga MapReduce nima. Različna orodja za obdelavo grafov, kot sta Pregel in GraphLab, so bila zasnovana, da bi odgovorila na potrebo po učinkoviti platformi za algoritme za obdelavo grafov. Ta orodja so hitra in razširljiva, vendar niso učinkovita za ustvarjanje in naknadno obdelavo teh kompleksnih večstopenjskih algoritmov.

Uvedba Apache Spark je te težave v veliki meri rešila. Spark vsebuje knjižnico za izračun grafov, imenovano GraphX, ki nam poenostavlja življenje. Izračun v pomnilniku skupaj z vgrajeno podporo za grafe izboljša zmogljivost algoritma za eno ali dve stopinji v primerjavi s tradicionalnimi programi MapReduce. Spark uporablja kombinacijo Netty in Akka za distribucijo sporočil med izvršitelji. Oglejmo si nekaj statističnih podatkov, ki prikazujejo delovanje algoritma PageRank z uporabo Hadoop in Spark.

Iterativni algoritmi strojnega učenja:

Skoraj vsi algoritmi strojnega učenja delujejo iteracijsko. Kot smo že videli, iterativni algoritmi vključujejo ozko grlo V / I pri izvedbah MapReduce. MapReduce uporablja grobo zrnate naloge (vzporednost na ravni nalog), ki so pretežke za iterativne algoritme. Spark s pomočjo Mesosa - porazdeljenega sistemskega jedra, predpomni vmesni nabor podatkov po vsaki ponovitvi in ​​izvede več ponovitev tega predpomnjenega nabora podatkov, kar zmanjša vhodno / izhodne podatke in pripomore k hitrejšemu zagonu algoritma na odporen napak.

izjave o nadzornem toku v javi

Spark ima vgrajeno razširljivo knjižnico strojnega učenja, imenovano MLlib, ki vsebuje visokokakovostne algoritme, ki uporabljajo ponovitve in prinašajo boljše rezultate kot približki enega prehoda, ki se včasih uporabljajo na MapReduce.

  • Hitra obdelava podatkov. Kot vemo, Spark omogoča obdelavo v pomnilniku. Posledično je Spark do 100-krat hitrejši za podatke v RAM-u in do 10-krat za podatke v pomnilniku.
  • Ponovna obdelava. Sparkovi RDD-ji omogočajo izvajanje več operacij zemljevida v pomnilniku, pri čemer ni treba zapisovati vmesnih podatkovnih nizov na disk.
  • Skoraj sprotna obdelava. Spark je odlično orodje za takojšnje vpogled v poslovanje. To je razlog, zakaj se Spark uporablja v sistemu za pretakanje kreditnih kartic.

'Apache Spark: morilec ali rešitelj Apache Hadoop?'

Odgovor na to - Hadoop MapReduce in Apache Spark ne tekmujeta med seboj. Pravzaprav se med seboj precej dobro dopolnjujeta. Hadoop oskrbuje z ogromnimi nabori podatkov pod nadzorom blagovnih sistemov. Spark zagotavlja obdelavo v pomnilniku v realnem času za tiste nabore podatkov, ki to zahtevajo. Ko združimo zmožnost Apache Spark, to je visoko hitrost obdelave, vnaprejšnjo analitiko in podporo za večkratno integracijo s Hadoopovim nizkocenovnim delovanjem na osnovni strojni opremi, daje najboljše rezultate. Hadoop pozdravlja zmogljivosti Apache Spark. Spark ne more popolnoma nadomestiti Hadoopa, dobra novica pa je, da je povpraševanje po Sparku trenutno na najvišjem nivoju! To je pravi čas, da obvladate Spark in kar najbolje izkoristite priložnosti za kariero, ki se vam odprejo. Začni zdaj!

Imate vprašanje za nas? Prosimo, navedite to v oddelku za komentarje in prej se vam bomo oglasili.

Če se želite naučiti Sparka in ustvariti kariero v domeni Spark za izvajanje obsežne obdelave podatkov z uporabo RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​in Scala z dejanskimi primeri uporabe, si oglejte naš interaktivni splet v živo tukaj, prihaja s podporo 24 * 7, ki vas vodi skozi celotno obdobje učenja.