Spark vs Hadoop: Mikä on paras Big Data Framework?



Tämä blogikirjoitus puhuu apache spark vs hadoop. Se antaa sinulle käsityksen siitä, mikä on oikea Big Data -kehys, jota voit valita eri tilanteissa.

Aloitan tämän Apache Spark vs Hadoop -blogin ottamalla ensin käyttöön Hadoopin ja Sparkin, jotta voin asettaa oikean kontekstin molemmille kehyksille. Sitten eteenpäin verrataan molempia Big Data -kehyksiä eri parametreihin niiden vahvuuksien ja heikkouksien analysoimiseksi.Mutta riippumatta vertailun lopputuloksesta, sinun pitäisi tietää, että sekä Spark että Hadoop ovat tärkeitä komponentteja .

Apache Spark vs Hadoop: Johdanto Hadoopiin

Hadoop on kehys, jonka avulla voit tallentaa Big Data ensin hajautettuun ympäristöön, jotta voit käsitellä sitä rinnakkain. Hadoopissa on periaatteessa kaksi komponenttia:





HDFS

HDFS luo abstraktin resursseista, haluan yksinkertaistaa sitä puolestasi. Samoin kuin virtualisointi, voit nähdä HDFS: n loogisesti yhtenä yksikkönä suurten tietojen tallentamiseen, mutta itse asiassa tallennat tietosi useisiin solmuihin hajautetusti. Täällä sinulla on isäntä-orja-arkkitehtuuri. HDFS: ssä Namenode on pääsolmu ja Datanodes ovat orjia.

NameNode

Se on päädemoniini, joka ylläpitää ja hallinnoi DataNodeja (orjasolmut). Se tallentaa kaikkien klusteriin tallennettujen tiedostojen metatiedot, esim. tallennettujen lohkojen sijainti, tiedostojen koko, käyttöoikeudet, hierarkia jne. Se tallentaa kaikki tiedostojärjestelmän metatietoihin tehtävät muutokset.



Esimerkiksi, jos tiedosto poistetaan HDFS: stä, NameNode tallentaa tämän välittömästi EditLogiin. Se vastaanottaa säännöllisesti sydämenlyönti- ja lohkoraportin kaikista klusterin DataNodeista sen varmistamiseksi, että DataNodes on aktiivinen. Se pitää kirjaa kaikista HDFS: n lohkoista ja mihin solmuihin nämä lohkot on tallennettu.

DataNode

Nämä ovat orja-demoneja, jotka toimivat jokaisella orjakoneella. Todelliset tiedot tallennetaan DataNodes-palveluun. He ovat vastuussa asiakkaiden luku- ja kirjoituspyyntöjen tarjoamisesta. He ovat myös vastuussa lohkojen luomisesta, lohkojen poistamisesta ja niiden replikoinnista NameNoden tekemien päätösten perusteella.

kuinka kirjoittaa skanneri java

HDFS - Apache Spark vs Hadoop - EdurekaLANKA

YARN suorittaa kaikki käsittelytoiminnot jakamalla resursseja ja aikatauluttamalla tehtäviä. Siinä on kaksi suurta demonia, ts. ResourceManager ja NodeManager .



ResourceManager

Se on klusteritason (yksi kullekin klusterille) komponentti ja toimii pääkoneella. Se hallinnoi resursseja ja ajoittaa YARNin päällä olevia sovelluksia.

NodeManager

Se on solmutason komponentti (yksi kussakin solmussa) ja toimii jokaisella orjakoneella. Se vastaa konttien hallinnasta ja kunkin säiliön resurssien käytön valvonnasta. Se seuraa myös solmujen kuntoa ja lokien hallintaa. Se on jatkuvasti yhteydessä ResourceManageriin pysyäkseen ajan tasalla. Joten voit suorittaa rinnakkaiskäsittelyn HDFS: llä MapReduce-sovelluksella.

Jos haluat oppia lisää Hadoopista, voit käydä tämän läpi blogi. Nyt, kun Hadoop-käyttöönotto on nyt valmis, siirrymme Spark-esittelyyn.

Apache Spark vs Hadoop: Johdatus Apache Sparkiin

Apache Spark on kehys reaaliaikaiselle data-analyysille hajautetussa laskentaympäristössä. Se suorittaa muistin sisäisiä laskelmia tietojen käsittelyn nopeuden lisäämiseksi. Se on nopeampi suurten tietojen käsittelyyn, koska se hyödyntää muistin sisäisiä laskelmia ja muita optimointeja. Siksi se vaatii suurta prosessointitehoa.

Resilient Distributed Dataset (RDD) on Sparkin perustietorakenne. Se on muuttumaton hajautettu esineiden kokoelma. Jokainen RDD-tietojoukko on jaettu loogisiin osioihin, jotka voidaan laskea klusterin eri solmuissa. RDD: t voivat sisältää minkä tahansa tyyppisiä Python-, Java- tai Scala-objekteja, mukaan lukien käyttäjän määrittämät luokat. Kipinäkomponentit tekevät siitä nopean ja luotettavan. Apache Sparkilla on seuraavat komponentit:

  1. Kipinän ydin - Spark Core on perusmoottori laajamittaiseen rinnakkaiseen ja hajautettuun tietojenkäsittelyyn. Lisäksi ytimen yläpuolelle rakennetut lisäkirjastot mahdollistavat erilaiset kuormitukset suoratoistoon, SQL: ään ja koneoppimiseen. Se vastaa muistinhallinnasta ja vikojen palauttamisesta, töiden ajoituksesta, jakamisesta ja seurannasta klusterissa sekä vuorovaikutuksesta tallennusjärjestelmien kanssa
  2. Kipinän suoratoisto - Spark Streaming on Sparkin osa, jota käytetään reaaliaikaisen suoratoistodatan käsittelyyn. Siten se on hyödyllinen lisäys Spark-ydinsovellusliittymään. Se mahdollistaa suoran datavirran suuritehoisen ja vikasietoisen virran käsittelyn
  3. Spark SQL : Spark SQL on uusi moduuli Sparkissa, joka integroi relaatioprosessoinnin Sparkin toiminnallisen ohjelmointirajapinnan kanssa. Se tukee tietojen kyselyä joko SQL: n tai Hive Query Language -sivuston kautta. Niille teistä, jotka tuntevat RDBMS: n, Spark SQL on helppo siirtyminen aikaisemmista työkaluistanne, joissa voit laajentaa perinteisen relaatiotietojen käsittelyn rajoja.
  4. GraphX : GraphX ​​on Spark-sovellusliittymä graafeille ja kuvaajien rinnakkaislaskennalle. Siten se laajentaa Spark RDD: tä joustavan hajautetun ominaisuuden kuvaajalla. Korkealla tasolla GraphX ​​laajentaa Spark RDD: n abstraktiota ottamalla käyttöön joustavan hajautetun ominaisuuden kaavion: suunnatun monigrafiikan, jonka ominaisuudet on kiinnitetty jokaiseen kärkeen ja reunaan.
  5. MLlib (Machine Learning): MLlib tarkoittaa koneoppimisen kirjastoa. Spark MLlibiä käytetään koneoppimiseen Apache Sparkissa.

Kuten näette, Spark on täynnä korkean tason kirjastoja, mukaan lukien tuki R: lle, SQL: lle, Pythonille, Scalalle, Java: lle jne. Nämä vakiokirjastot lisäävät saumattomia integraatioita monimutkaisessa työnkulussa. Tämän lisäksi se antaa myös mahdollisuuden integroida erilaisia ​​palveluja, kuten MLlib, GraphX, SQL + Data Frames, suoratoistopalvelut jne.

Saat lisätietoja Apache Sparkista käymällä läpi tämän blogi. Nyt maa on asetettu Apache Spark vs Hadoop -pelille. Siirrytään eteenpäin ja verrataan Apache Sparkia Hadoopin kanssa eri parametreissa ymmärtämään niiden vahvuuksia.

Apache Spark vs Hadoop: Vertailtavat parametrit

Esitys

Spark on nopea, koska sillä on muistin sisäinen käsittely. Se voi myös käyttää levyä dataan, joka ei mahdu muistiin. Sparkin muisti-käsittely tuottaa lähes reaaliaikaista analytiikkaa. Tämä tekee Sparkista sopivan luottokortin käsittelyjärjestelmään, koneoppimiseen, tietoturva-analytiikkaan ja esineiden internet -antureihin.

big data -analyysin sovellukset

Hadoop oli alun perin asetettu keräämään jatkuvasti tietoja useista lähteistä huolimatta tietojen tyypistä ja tallentamisesta hajautettuun ympäristöön. MapReduce käyttää eräkäsittelyä. MapReducea ei koskaan rakennettu reaaliaikaista käsittelyä varten, YARNin pääajatuksena on rinnakkaiskäsittely hajautetun tietojoukon yli.

Näiden kahden vertailun ongelmana on, että ne suorittavat prosessoinnin eri tavalla.

Helppokäyttöisyys

Sparkissa on käyttäjäystävälliset sovellusliittymät Scalalle, Java: lle, Pythonille ja Spark SQL: lle. Spark SQL on hyvin samanlainen kuin SQL, joten SQL-kehittäjien on helpompaa oppia se. Spark tarjoaa myös interaktiivisen kuoren kehittäjille kyselyihin ja muihin toimintoihin sekä välitöntä palautetta varten.

Voit syödä tietoja Hadoopissa helposti joko käyttämällä komentotulkkia tai integroimalla ne useisiin työkaluihin, kuten Sqoop, Flume jne. Lanka on vain prosessointikehys, ja se voidaan integroida useiden työkalujen, kuten Hive ja Pig, kanssa. HIVE on tietovarastokomponentti, joka lukee, kirjoittaa ja hallitsee suuria tietojoukkoja hajautetussa ympäristössä SQL-tyyppisen käyttöliittymän avulla. Voit käydä tämän läpi Hadoop-ekosysteemi blogi tietää erilaisista työkaluista, jotka voidaan integroida Hadoopin kanssa.

Kustannukset

Hadoop ja Spark ovat molemmat Apache-avoimen lähdekoodin projekteja, joten ohjelmisto ei maksa mitään. Kustannukset liittyvät vain infrastruktuuriin. Molemmat tuotteet on suunniteltu siten, että ne voivat toimia hyödykelaitteistoilla, joilla on alhainen TCO.

Nyt saatat miettiä tapoja, joilla ne ovat erilaisia. Varastointi ja käsittely Hadoopissa on levypohjaista, ja Hadoop käyttää vakiomääriä muistia. Joten Hadoopin kanssa tarvitsemme paljon levytilaa sekä nopeammat levyt. Hadoop vaatii myös useita järjestelmiä levyn I / O: n jakamiseksi.

Apache Sparkin muistinkäsittelystä johtuen se vaatii paljon muistia, mutta se pystyy käsittelemään tavallisen nopeuden ja levymäärän. Koska levytila ​​on suhteellisen halpa hyödyke ja koska Spark ei käytä levyn I / O-käsittelyä, se vaatii suuria määriä RAM-muistia kaiken muistin suorittamiseen. Siten Spark-järjestelmästä aiheutuu enemmän kustannuksia.

Mutta kyllä, yksi tärkeä asia pitää mielessä on, että Sparkin tekniikka vähentää tarvittavien järjestelmien määrää. Se tarvitsee huomattavasti vähemmän järjestelmiä, jotka maksavat enemmän. Joten on kohta, jossa Spark vähentää kustannuksia laskentayksikköä kohden, vaikka RAM-lisävaatimukset olisivatkin.

Tietojenkäsittely

Tietojenkäsittelyä on kahta tyyppiä: Eräkäsittely ja Suoratoisto.

Eräkäsittely vs suoratoistokäsittely

Eräkäsittely : Eräkäsittely on ollut ratkaisevaa big data-maailmassa. Yksinkertaisesti sanottuna eräkäsittely toimii suurella tietomäärällä, joka on kerätty ajanjaksolla. Eräkäsittelyssä tiedot kerätään ensin ja sitten jalostetut tulokset tuotetaan myöhemmin.

Eräkäsittely on tehokas tapa käsitellä suuria, staattisia tietojoukkoja. Yleensä suoritamme eräkäsittelyn arkistoiduille tietojoukoille. Esimerkiksi maan keskimääräisten tulojen laskeminen tai verkkokaupan muutoksen arviointi viime vuosikymmenellä.

Suoratoiston käsittely : Suoratoiston käsittely on nykyinen trendi big data-maailmassa. Tunnin tarve on nopeus ja reaaliaikainen tieto, mitä höyrykäsittely tekee. Eräkäsittely ei salli yritysten reagoida nopeasti muuttuviin liiketoiminnan tarpeisiin reaaliajassa, suoratoistokysynnän kysyntä on kasvanut nopeasti.

Palattuaan nyt Apache Spark vs.Hadoopiin, YARN on pohjimmiltaan eräkäsittelykehys. Kun lähetämme työn YARNille, se lukee tietoja klusterista, suorittaa toiminnon ja kirjoittaa tulokset takaisin klusteriin. Sitten se lukee uudelleen päivitetyt tiedot, suorittaa seuraavan toimenpiteen ja kirjoittaa tulokset takaisin klusteriin ja niin edelleen.

Spark suorittaa samanlaisia ​​toimintoja, mutta se käyttää muistin käsittelyä ja optimoi vaiheet. GraphX ​​antaa käyttäjille mahdollisuuden tarkastella samoja tietoja graafina ja kokoelmina. Käyttäjät voivat myös muuntaa kaavioita ja liittyä niihin joustavien hajautettujen tietojoukkojen (RDD) avulla.

Vikasietoisuus

Hadoop ja Spark tarjoavat molemmat vikasietoisuuden, mutta molemmilla on erilainen lähestymistapa. Sekä HDFS: n että YARN: n tapauksessa päädemonit (eli vastaavasti NameNode & ResourceManager) tarkistavat orja-deemonien (eli vastaavasti DataNode & NodeManager) sykkeen. Jos jokin orja-daemon epäonnistuu, päädemonit aikatauluttavat kaikki odottavat ja keskeneräiset toiminnot toiselle orjalle. Tämä menetelmä on tehokas, mutta se voi merkittävästi pidentää myös yksittäisten vikojen aiheuttamien toimintojen suorittamisaikaa. Koska Hadoop käyttää hyödykelaitteistoa, toinen tapa, jolla HDFS varmistaa vikasietoisuuden, on tietojen kopiointi.

Kuten edellä keskustelimme, RDD: t ovat Apache Sparkin rakennuspalikoita. RDD: t tarjoavat vikasietoisuuden Sparkille. Ne voivat viitata mihin tahansa ulkoisen tallennusjärjestelmän järjestelmään, kuten HDFS, HBase, jaettu tiedostojärjestelmä. Niitä voidaan käyttää rinnakkain.

RDD: t voivat säilyttää tietojoukon muistissa kaikkialla toiminnassa, mikä tekee tulevista toimista kymmenen kertaa nopeammin. Jos RDD menetetään, se lasketaan automaattisesti uudelleen alkuperäisten muunnosten avulla. Näin Spark tarjoaa vikasietoisuuden.

Turvallisuus

Hadoop tukee Kerberosia todennuksessa, mutta sitä on vaikea käsitellä. Siitä huolimatta se tukee myös kolmansien osapuolten toimittajia, kuten LDAP (Lightweight Directory Access Protocol) -todennusta. Ne tarjoavat myös salauksen. HDFS tukee perinteisiä tiedostojen käyttöoikeuksia sekä käyttöoikeusluetteloita (ACL). Hadoop tarjoaa palvelutason valtuutuksen, joka takaa, että asiakkailla on oikeat käyttöoikeudet työn lähettämiseen.

Spark tukee tällä hetkellä todennusta jaetun salaisuuden kautta. Spark voi integroida HDFS: n ja se voi käyttää HDFS: n ACL-luetteloita ja tiedostotason käyttöoikeuksia. Kipinä voi toimia myös YARNilla hyödyntämällä Kerberosin ominaisuuksia.

Käyttötapaukset, joissa Hadoop sopii parhaiten:

  • Analysoidaan arkistotietoja. YARN mahdollistaa valtavien tietomäärien rinnakkaiskäsittelyn. Osa tiedoista käsitellään samanaikaisesti ja erikseen eri DataNodeissa ja kunkin NodeManagerin keräämät tulokset.
  • Jos välittömiä tuloksia ei vaadita. Hadoop MapReduce on hyvä ja taloudellinen ratkaisu eräkäsittelyyn.

Käyttötapaukset, joissa Spark sopii parhaiten:

Reaaliaikainen suurten tietojen analyysi:

Reaaliaikainen data-analyysi tarkoittaa reaaliaikaisen tapahtumavirran tuottaman datan käsittelyä esimerkiksi miljoonien tapahtumien sekunnissa, esimerkiksi Twitter-datalla. Sparkin vahvuus on sen kyvyissä tukea tietojen suoratoistoa ja hajautettua käsittelyä. Tämä on hyödyllinen yhdistelmä, joka tuottaa lähes reaaliaikaisen tietojen käsittelyn. MapReducella on sellainen etu, että se on suunniteltu suorittamaan eräkohtainen hajautettu käsittely suurille tietomäärille. Reaaliaikaisia ​​tietoja voidaan silti käsitellä MapReducessa, mutta niiden nopeus ei ole läheskään Sparkin nopeutta.

avattava valikko angularjsissa

Spark väittää käsittelevänsä tietoja 100x nopeammin kuin MapReduce, kun taas 10x nopeammin levyjen kanssa.

Kaavioiden käsittely:

Suurin osa kaavion käsittelyalgoritmeista, kuten sivun sijoitus, suorittaa useita iteraatioita samoille tiedoille ja tämä vaatii viestin välitysmekanismin. Meidän on ohjelmoitava MapReduce nimenomaisesti käsittelemään tällaisia ​​useita iteraatioita samoille tiedoille. Karkeasti se toimii näin: Lue tiedot levyltä ja tietyn iteraation jälkeen kirjoita tulokset HDFS: ään ja lue sitten tiedot HDFS: stä seuraavaa iteraatiota varten. Tämä on hyvin tehotonta, koska siihen sisältyy tietojen lukeminen ja kirjoittaminen levylle, johon liittyy raskaita I / O-operaatioita ja tietojen replikointia klusterin läpi vikasietoisuuden takaamiseksi. Jokaisella MapReduce-iteraatiolla on myös erittäin suuri viive, ja seuraava iterointi voi alkaa vasta, kun edellinen työ on valmis.

Viestien välittäminen vaatii myös pisteitä vierekkäisistä solmuista tietyn solmun pisteiden arvioimiseksi. Nämä laskelmat tarvitsevat viestejä naapureilta (tai tietoja työn eri vaiheista), mekanismista, josta MapReduce puuttuu. Erilaiset kaavioiden prosessointityökalut, kuten Pregel ja GraphLab, on suunniteltu vastaamaan tehokkaan alustan tarpeeseen kaavioiden käsittelyalgoritmeille. Nämä työkalut ovat nopeita ja skaalautuvia, mutta eivät ole tehokkaita näiden monimutkaisten monivaiheisten algoritmien luomisessa ja jälkikäsittelyssä.

Apache Sparkin käyttöönotto ratkaisi nämä ongelmat suuressa määrin. Spark sisältää GraphX-nimisen graafilaskentakirjaston, joka yksinkertaistaa elämäämme. Muistin sisäinen laskenta yhdessä sisäänrakennetun kuvaajan tuen kanssa parantaa algoritmin suorituskykyä yhden tai kahden asteen verran perinteisiin MapReduce-ohjelmiin verrattuna. Spark käyttää Nettyn ​​ja Akkan yhdistelmää viestien jakamiseen suorittajille. Tarkastellaan joitain tilastoja, jotka kuvaavat PageRank-algoritmin suorituskykyä Hadoopin ja Sparkin avulla.

Iteratiiviset koneoppimisalgoritmit:

Lähes kaikki koneoppimisalgoritmit toimivat iteratiivisesti. Kuten aiemmin olemme nähneet, iteratiiviset algoritmit sisältävät I / O-pullonkauloja MapReduce-toteutuksissa. MapReduce käyttää karkearakeisia tehtäviä (tehtävätason rinnakkaisuus), jotka ovat liian raskaita iteratiivisille algoritmeille. Spark Mesosin avulla - hajautettu järjestelmän ydin, välimuisti välitietojoukon jokaisen iteraation jälkeen ja suorittaa useita iterointeja tällä välimuistissa olevalla tietojoukolla, mikä vähentää I / O: ta ja auttaa suorittamaan algoritmin nopeammin vikasietoisella tavalla.

Sparkissa on sisäänrakennettu skaalautuva koneoppimiskirjasto nimeltä MLlib, joka sisältää korkealaatuisia algoritmeja, jotka hyödyntävät iteraatioita ja tuottavat parempia tuloksia kuin MapReducessa joskus käytettävät yhden passin likiarvot.

  • Nopea tietojenkäsittely. Kuten tiedämme, Spark mahdollistaa muistin sisäisen käsittelyn. Tämän seurauksena Spark on jopa 100 kertaa nopeampi RAM-muistissa oleville tiedoille ja jopa 10 kertaa nopeampi tallennetuille tiedoille.
  • Iteratiivinen käsittely. Sparkin RDD: t mahdollistavat useiden karttatoimintojen suorittamisen muistissa, eikä välitietojoukkoja tarvitse kirjoittaa levylle.
  • Lähes reaaliaikainen käsittely. Spark on erinomainen työkalu välittömien liiketoimintatietojen tarjoamiseen. Tästä syystä Sparkia käytetään luottokortin suoratoistojärjestelmässä.

'Apache Spark: Apache Hadoopin tappaja tai pelastaja?'

Vastaus tähän - Hadoop MapReduce ja Apache Spark eivät kilpaile keskenään. Itse asiassa ne täydentävät toisiaan melko hyvin. Hadoop tuo valtavat aineistot hyödykejärjestelmien hallintaan. Spark tarjoaa reaaliaikaisen, muistin sisäisen prosessoinnin sitä tarvitseville tietojoukoille. Kun yhdistämme Apache Sparkin kyvyn eli nopean prosessointinopeuden, ennakoivan analyysin ja moninkertaisen integraation tuen Hadoopin edulliseen hyödykelaitteistoon, se antaa parhaat tulokset. Hadoop kehuu Apache Spark -ominaisuuksia. Spark ei voi täysin korvata Hadoopia, mutta hyvä uutinen on, että Sparkin kysyntä on tällä hetkellä kaikkien aikojen korkeimmalla tasolla! Tämä on oikea aika hallita Sparkia ja hyödyntää omalla tavallasi olevia uramahdollisuuksia. Aloita nyt!

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja otamme sinuun yhteyttä aikaisintaan.

Jos haluat oppia Sparkia ja rakentaa uraa Sparkin toimialueella suorittamaan laajamittaista tietojenkäsittelyä RDD: n, Spark Streamingin, SparkSQL: n, MLlibin, GraphX: n ja Scalan avulla Real Life -tapauksilla, tutustu interaktiiviseen live-online tässä, jonka mukana tulee 24 * 7 -tuki, joka ohjaa sinua koko oppimisjaksosi ajan.