Spark vs Hadoop: Koji je najbolji okvir za velike podatke?



Ovaj post na blogu govori o apache iskre protiv hadoopa. To će vam dati ideju o tome koji je pravi okvir za velike podatke odabrati u različitim scenarijima.

Započet ću ovaj blog Apache Spark vs Hadoop tako što ću prvo predstaviti Hadoop i Spark kako bih postavio pravi kontekst za oba okvira. Zatim ćemo, krećući se naprijed, usporediti oba okvira velikih podataka na različitim parametrima kako bismo analizirali njihove snage i slabosti.No, bez obzira na ishod naše usporedbe, trebali biste znati da su i Spark i Hadoop presudne komponente .

Apache Spark vs Hadoop: Uvod u Hadoop

Hadoop je okvir koji vam omogućuje da prvo pohranite velike podatke u distribuiranom okruženju kako biste ih mogli paralelno obrađivati. U osnovi su dvije komponente u Hadoopu:





HDFS

HDFS stvara apstrakciju resursa, dopustite mi da vam to pojednostavim. Slično virtualizaciji, i HDFS logično možete vidjeti kao jednu jedinicu za pohranu velikih podataka, ali zapravo podatke distribuirate na više čvorova. Evo, imate arhitekturu master-slave. U HDFS-u Namenode je glavni čvor, a Datanode su robovi.

NameNode

Glavni demon je taj koji održava i upravlja DataNodes (slave čvorovi). Bilježi metapodatke svih datoteka pohranjenih u klasteru, na pr. mjesto pohranjenih blokova, veličina datoteka, dozvole, hijerarhija, itd. Bilježi svaku promjenu koja se događa u metapodacima datotečnog sustava.



Na primjer, ako se datoteka izbriše u HDFS-u, NameNode će to odmah snimiti u EditLog. Redovito prima otkucaje srca i izvješće o blokadi od svih DataNodes-a u klasteru kako bi osigurao da DataNodes rade. Čuva evidenciju svih blokova u HDFS-u i u kojim su čvorovima ti blokovi pohranjeni.

DataNode

To su demoni slave koji rade na svakom robovu stroju. Stvarni podaci pohranjeni su na DataNodes. Oni su odgovorni za pružanje zahtjeva za čitanje i pisanje od klijenata. Oni su također odgovorni za stvaranje blokova, brisanje blokova i njihovo kopiranje na temelju odluka koje je donio NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaPREĐA

YARN obavlja sve vaše aktivnosti obrade raspodjelom resursa i zadacima raspoređivanja. Ima dva glavna demona, t.j. ResourceManager i NodeManager .



ResourceManager

To je komponenta na razini klastera (jedna za svaki klaster) i radi na glavnom stroju. Upravlja resursima i raspoređuje programe koji se izvršavaju na vrhu YARN.

NodeManager

Komponenta je na razini čvora (po jedna na svakom čvoru) i izvodi se na svakom podređenom stroju. Odgovorno je za upravljanje spremnicima i praćenje korištenja resursa u svakom spremniku. Također prati zdravlje čvorova i upravljanje zapisima. Kontinuirano komunicira s ResourceManagerom kako bi ostao u toku. Dakle, možete izvesti paralelnu obradu na HDFS-u pomoću MapReduce-a.

java što je vektor

Da biste saznali više o Hadoopu, možete to proći blog. Sad, kad smo svi spremni za uvod u Hadoop, prijeđimo na uvod u Spark.

Apache Spark vs Hadoop: Uvod u Apache Spark

Apache Spark je okvir za analitiku podataka u stvarnom vremenu u distribuiranom računalnom okruženju. Izvršava izračunavanja u memoriji radi povećanja brzine obrade podataka. Brži je za obradu podataka velikih razmjera jer koristi izračune u memoriji i druge optimizacije. Stoga zahtijeva veliku procesorsku snagu.

Otporni distribuirani skup podataka (RDD) temeljna je struktura podataka Sparka. To je nepromjenjiva distribuirana zbirka predmeta. Svaki skup podataka u RDD-u podijeljen je na logičke particije, koje se mogu izračunati na različitim čvorovima klastera. RDD-ovi mogu sadržavati bilo koju vrstu Python, Java ili Scala objekata, uključujući korisnički definirane klase. Iskra komponente čine ga brzim i pouzdanim. Apache Spark ima sljedeće komponente:

  1. Iskra jezgra - Spark Core osnovni je pokretač velike paralelne i distribuirane obrade podataka. Nadalje, dodatne biblioteke koje su izgrađene na vrhu jezgre omogućuju različita opterećenja za streaming, SQL i strojno učenje. Odgovorna je za upravljanje memorijom i obnavljanje grešaka, raspoređivanje, distribuciju i nadzor poslova na klasteru i interakciju sa sustavima za pohranu
  2. Iskreno strujanje - Spark Streaming komponenta je Spark koja se koristi za obradu podataka strujanja u stvarnom vremenu. Stoga je koristan dodatak jezgri API-ja Spark. Omogućuje obradu tokova podataka uživo s velikom propusnošću i otpornim na greške
  3. Spark SQL : Spark SQL novi je modul u Sparku koji integrira relacijsku obradu sa Sparkovim API-jem za funkcionalno programiranje. Podržava upite podataka bilo putem SQL-a ili putem jezika upita za košnice. Za one koji su vam poznati RDBMS, Spark SQL bit će jednostavan prijelaz s vaših ranijih alata gdje možete proširiti granice tradicionalne relacijske obrade podataka.
  4. GraphX : GraphX ​​je Spark API za grafove i izračunavanje paralelno s grafovima. Dakle, proširuje Spark RDD s grafikom elastičnog raspodijeljenog svojstva. Na visokoj razini, GraphX ​​proširuje apstrakciju Spark RDD uvođenjem Resilient Distributed Property Graph: usmjerenog multigrafa sa svojstvima pričvršćenim na svaki vrh i rub.
  5. MLlib (Strojno učenje): MLlib je skraćenica od Knjižnica strojnog učenja. Spark MLlib koristi se za izvođenje strojnog učenja u Apache Sparku.

Kao što vidite, Spark dolazi prepun biblioteka na visokoj razini, uključujući podršku za R, SQL, Python, Scala, Java itd. Ove standardne knjižnice povećavaju neprimjetne integracije u složenom tijeku rada. Osim toga, on također omogućuje da se s njim integriraju različiti skupovi usluga poput MLlib, GraphX, SQL + podatkovni okviri, streaming usluge itd. Kako bi povećali svoje mogućnosti.

Da biste saznali više o Apache Spark, možete to proći blog. Sada je teren spreman za Apache Spark vs Hadoop. Krenimo dalje i usporedimo Apache Spark s Hadoopom na različitim parametrima kako bismo razumjeli njihove snage.

Apache Spark vs Hadoop: Parametri za usporedbu

Izvođenje

Spark je brz jer ima obradu u memoriji. Također može koristiti disk za podatke koji se ne uklapaju u memoriju. Sparkova obrada u memoriji pruža analitiku gotovo u stvarnom vremenu. To Spark čini prikladnim za sustav za obradu kreditnih kartica, strojno učenje, sigurnosnu analitiku i senzore za Internet stvari.

Hadoop je prvotno postavljen za kontinuirano prikupljanje podataka iz više izvora, bez brige o vrsti podataka i njihovom pohrani u distribuiranom okruženju. MapReduce koristi serijsku obradu. MapReduce nikada nije napravljen za obradu u stvarnom vremenu, glavna ideja koja stoji iza YARN-a je paralelna obrada nad distribuiranim skupom podataka.

Problem uspoređivanja njih dvoje je taj što obradu obavljaju različito.

Jednostavnost korištenja

Spark dolazi s korisničkim API-ima za Scala, Java, Python i Spark SQL. Spark SQL vrlo je sličan SQLu, tako da ga programeri SQL-a mogu lakše naučiti. Spark također nudi interaktivnu ljusku za programere koja može postavljati upite i izvoditi druge radnje te imati trenutne povratne informacije.

Podatke u Hadoop možete unijeti lako bilo korištenjem ljuske ili njihovim integriranjem s više alata poput Sqoop-a, Flume-a itd. PREĐA je samo okvir za obradu i može se integrirati s više alata poput košnice i svinje. HIVE je komponenta za skladištenje podataka koja izvodi čitanje, pisanje i upravljanje velikim skupovima podataka u distribuiranom okruženju koristeći sučelje nalik SQL-u. Možete proći kroz ovo Hadoop ekosustav blog kako biste znali o raznim alatima koji se mogu integrirati s Hadoop-om.

Troškovi

Oboje su Hadoop i Spark Apacheovi projekti otvorenog koda, tako da softver ne košta. Troškovi su povezani samo s infrastrukturom. Oba su proizvoda dizajnirana na takav način da mogu raditi na robnom hardveru s niskim TCO.

Sad se možda pitate na koje su načine različiti. Pohrana i obrada u Hadoopu temelji se na disku, a Hadoop koristi standardne količine memorije. Dakle, s Hadoopom trebamo puno prostora na disku, kao i brže diskove. Hadoop također zahtijeva više sustava za distribuciju diska U / I.

Zbog Apache Sparka u obradi memorije zahtijeva puno memorije, ali može se nositi sa standardnom brzinom i količinom diska. Kako je prostor na disku relativno jeftina roba i budući da Spark ne koristi I / O disk za obradu, umjesto toga zahtijeva velike količine RAM-a za izvršavanje svega što je u memoriji. Dakle, Spark sustav ima veće troškove.

Ali da, jedna važna stvar koju treba imati na umu jest da Sparkova tehnologija smanjuje broj potrebnih sustava. Potrebno je znatno manje sustava koji koštaju više. Dakle, bit će točka u kojoj Spark smanjuje troškove po jedinici izračunavanja čak i uz dodatni zahtjev za RAM-om.

Obrada podataka

Postoje dvije vrste obrade podataka: skupna obrada i strujna obrada.

Skupna obrada vs strujna obrada

Skupna obrada : Skupna obrada bila je presudna za svijet velikih podataka. Najjednostavnije rečeno, šaržna obrada radi s velikim količinama podataka prikupljenim tijekom određenog razdoblja. U serijskoj obradi prvo se prikupljaju podaci, a zatim se obrađeni rezultati proizvode u kasnijoj fazi.

Skupna obrada učinkovit je način obrade velikih, statičnih skupova podataka. Općenito obavljamo skupnu obradu arhiviranih skupova podataka. Na primjer, izračunavanje prosječnog dohotka zemlje ili procjena promjene u e-trgovini u posljednjem desetljeću.

Obrada streama : Obrada streama trenutni je trend u svijetu velikih podataka. Potreba sata su brzina i informacije u stvarnom vremenu, što čini obrada parom. Serijska obrada ne dopušta tvrtkama da brzo reagiraju na promjenu poslovnih potreba u stvarnom vremenu, stream obrada bilježi brzi rast potražnje.

Sada se vraća na Apache Spark vs Hadoop, YARN je u osnovi okvirni postupak obrade. Kad posao pošaljemo na YARN, on čita podatke s klastera, izvodi operaciju i zapisuje rezultate natrag u klaster. Zatim ponovno čita ažurirane podatke, izvodi sljedeću operaciju i zapisuje rezultate natrag u klaster i tako dalje.

Spark izvodi slične operacije, ali koristi obradu u memoriji i optimizira korake. GraphX ​​omogućuje korisnicima pregled istih podataka kao grafikoni i kao zbirke. Korisnici također mogu transformirati i pridružiti se grafovima s elastičnim distribuiranim skupovima podataka (RDD).

Tolerancija kvarova

Hadoop i Spark pružaju toleranciju kvarova, ali oba imaju različit pristup. Za oba HDFS-a i YARN-a, glavni demoni (tj. NameNode i ResourceManager) provjeravaju otkucaje srca nadređenih demona (tj. DataNode i NodeManager). Ako bilo koji slave slave demon ne uspije, glavni demoni preusmjeravaju sve operacije na čekanju i u tijeku u drugi slave. Ova metoda je učinkovita, ali može značajno povećati vrijeme dovršenja i za operacije s jednim neuspjehom. Kako Hadoop koristi robni hardver, drugi način na koji HDFS osigurava toleranciju kvarova je repliciranje podataka.

Kao što smo gore razgovarali, RDD-ovi su gradivni blokovi Apache Spark-a. RDD-ovi osiguravaju toleranciju kvarova na Spark. Oni se mogu odnositi na bilo koji skup podataka koji je prisutan u vanjskom sustavu za pohranu poput HDFS-a, HBase-a, zajedničkog datotečnog sustava. Njima se može raditi paralelno.

RDD-ovi mogu zadržati skup podataka u memoriji tijekom različitih operacija, što čini buduće akcije 10 puta mnogo bržim. Ako se RDD izgubi, automatski će se izračunati korištenjem izvornih transformacija. Na ovaj način Spark osigurava toleranciju kvarova.

Sigurnost

Hadoop podržava Kerberos za provjeru autentičnosti, ali je teško rukovati njime. Unatoč tome, podržava i nezavisne dobavljače poput LDAP-a (lagani protokol pristupa direktoriju) za provjeru autentičnosti. Oni također nude šifriranje. HDFS podržava tradicionalna dopuštenja datoteka, kao i popise za kontrolu pristupa (ACL). Hadoop pruža autorizaciju na razini usluge, što jamči da klijenti imaju prava dopuštenja za prijavljivanje na posao.

Spark trenutno podržava provjeru autentičnosti putem zajedničke tajne. Spark se može integrirati s HDFS-om i može koristiti HDFS ACL-ove i dozvole na razini datoteke. Spark se također može pokretati na pređi iskorištavajući mogućnosti Kerberosa.

Slučajevi upotrebe u kojima Hadoop najbolje odgovara:

  • Analiza arhivskih podataka. YARN omogućuje paralelnu obradu ogromnih količina podataka. Dijelovi podataka obrađuju se paralelno i odvojeno na različitim DataNodes-ima i prikupljaju rezultate iz svakog NodeManager-a.
  • Ako trenutni rezultati nisu potrebni. Hadoop MapReduce dobro je i ekonomično rješenje za šaržnu obradu.

Slučajevi upotrebe u kojima Spark najbolje odgovara:

Analiza velikih podataka u stvarnom vremenu:

Analiza podataka u stvarnom vremenu podrazumijeva obradu podataka generiranih strujanjem događaja u stvarnom vremenu koje dolaze brzinom od milijuna događaja u sekundi, na primjer Twitter podataka. Snaga Sparka leži u njegovim sposobnostima da podrže strujanje podataka zajedno s distribuiranom obradom. Ovo je korisna kombinacija koja omogućuje obradu podataka gotovo u stvarnom vremenu. MapReduce ima hendikepiranu prednost jer je dizajniran za obavljanje batch cum distribuirane obrade na velikim količinama podataka. Podaci u stvarnom vremenu i dalje se mogu obrađivati ​​na MapReduceu, ali brzina im nije ni blizu brzine Sparka.

Spark tvrdi da obrađuje podatke 100 puta brže od MapReducea, dok 10 puta brže s diskovima.

Obrada grafikona:

Većina algoritama za obradu grafova poput ranga stranice izvodi višestruke iteracije nad istim podacima, a to zahtijeva mehanizam za prosljeđivanje poruka. Moramo izričito programirati MapReduce za obradu takvih višestrukih iteracija preko istih podataka. Otprilike, to funkcionira ovako: Čitajte podatke s diska i nakon određene iteracije zapisujte rezultate na HDFS, a zatim čitajte podatke s HDFS-a za sljedeću iteraciju. To je vrlo neučinkovito jer uključuje čitanje i upisivanje podataka na disk što uključuje teške I / O operacije i replikaciju podataka na klasteru radi tolerancije grešaka. Također, svaka iteracija MapReduce ima vrlo visoku latenciju, a sljedeća iteracija može započeti tek nakon što prethodni posao u potpunosti završi.

Također, za prosljeđivanje poruka potrebni su bodovi susjednih čvorova kako bi se procijenio rezultat određenog čvora. Ovim proračunima potrebne su poruke njegovih susjeda (ili podaci u više faza posla), mehanizam koji MapReduceu nedostaje. Različiti alati za obradu grafova poput Pregela i GraphLaba dizajnirani su kako bi udovoljili potrebi za učinkovitom platformom za algoritme za obradu grafova. Ovi su alati brzi i skalabilni, ali nisu učinkoviti za izradu i naknadnu obradu ovih složenih višestepenih algoritama.

Uvođenje Apache Sparka u velikoj je mjeri riješilo ove probleme. Spark sadrži knjižnicu za računanje grafova nazvanu GraphX ​​koja pojednostavljuje naš život. Izračunavanje u memoriji zajedno s ugrađenom podrškom za grafove poboljšava performanse algoritma za jedan ili dva stupnja u odnosu na tradicionalne programe MapReduce. Spark koristi kombinaciju Nettyja i Akke za distribuciju poruka po izvršiteljima. Pogledajmo neke statistike koje prikazuju izvedbu algoritma PageRank koristeći Hadoop i Spark.

Iterativni algoritmi strojnog učenja:

Gotovo svi algoritmi strojnog učenja rade iterativno. Kao što smo vidjeli ranije, iterativni algoritmi uključuju usko-uska grla u implementacijama MapReducea. MapReduce koristi grubozrnaste zadatke (paralelizam na razini zadataka) koji su preteški za iterativne algoritme. Spark uz pomoć Mesosa - distribuiranog jezgra sustava, predmemorira srednji skup podataka nakon svake iteracije i izvodi više iteracija na ovom predmemoriranom skupu podataka što smanjuje I / O i pomaže bržem pokretanju algoritma na način otporan na kvarove.

Spark ima ugrađenu skalabilnu biblioteku strojnog učenja nazvanu MLlib koja sadrži visokokvalitetne algoritme koji koriste iteracije i daju bolje rezultate od aproksimacija jednog prolaza koji se ponekad koriste na MapReduceu.

  • Brza obrada podataka. Kao što znamo, Spark omogućuje obradu u memoriji. Kao rezultat toga, Spark je do 100 puta brži za podatke u RAM-u i do 10 puta za podatke u pohrani.
  • Iterativna obrada. Sparkovi RDD-ovi omogućuju izvođenje nekoliko operacija mapiranja u memoriji, bez potrebe za upisivanjem privremenih skupova podataka na disk.
  • U blizini obrade u stvarnom vremenu. Spark je izvrstan alat za pružanje neposrednih poslovnih uvida. To je razlog zašto se Spark koristi u sustavu za streaming kreditne kartice.

'Apache iskra: ubojica ili spasitelj Apache Hadoopa?'

Odgovor na ovo - Hadoop MapReduce i Apache Spark ne natječu se jedni s drugima. Zapravo se prilično dobro nadopunjuju. Hadoop stavlja ogromne skupove podataka pod kontrolu robnih sustava. Spark omogućuje obradu u memoriji u stvarnom vremenu za one skupove podataka koji to zahtijevaju. Kada kombiniramo sposobnost Apache Sparka, tj. Visoku brzinu obrade, unaprijednu analitiku i podršku višestruke integracije s Hadoopovim jeftinim operacijama na robnom hardveru, daje najbolje rezultate. Hadoop pozdravlja mogućnosti Apache Spark. Spark ne može u potpunosti zamijeniti Hadoop, ali dobra vijest je da je potražnja za Sparkom trenutno na visokom nivou! Ovo je pravo vrijeme da svladate Spark i iskoristite mogućnosti za karijeru koje vam se nađu na putu. Započni sada!

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare i javit ćemo vam se najranije.

Ako želite naučiti Spark i izgraditi karijeru u domeni Spark za obavljanje velike obrade podataka pomoću RDD-a, Spark Streaming-a, SparkSQL-a, MLlib-a, GraphX-a i Scale sa stvarnim slučajevima korištenja, pogledajte naš interaktivni live-online ovdje, koja dolazi s podrškom 24 * 7 koja će vas voditi tijekom cijelog razdoblja učenja.