„Spark vs Hadoop“: kuri yra geriausia didžiųjų duomenų sistema?



Šiame tinklaraščio įraše kalbama apie apache spark vs hadoop. Tai suteiks jums idėją apie tai, kurią „Big Data“ sistemą reikia pasirinkti pagal skirtingus scenarijus.

Aš pradėsiu šį „Apache Spark vs Hadoop“ tinklaraštį pirmiausia pristatydamas „Hadoop“ ir „Spark“, kad nustatyčiau tinkamą abiejų sistemų kontekstą. Tada, eidami į priekį, palyginsime „Big Data“ sistemas pagal skirtingus parametrus, kad išanalizuotume jų stipriąsias ir silpnąsias puses.Nepaisant to, koks bus mūsų palyginimo rezultatas, turėtumėte žinoti, kad tiek „Spark“, tiek „Hadoop“ yra esminiai komponentai .

Apache Spark vs Hadoop: Įvadas į Hadoop

„Hadoop“ yra sistema, leidžianti pirmiausia saugoti „Big Data“ paskirstytoje aplinkoje, kad galėtumėte juos lygiagrečiai apdoroti. „Hadoop“ iš esmės yra du komponentai:





HDFS

HDFS sukuria išteklių santrauką, leiskite man ją supaprastinti. Panašiai kaip ir virtualizavimas, HDFS logiškai galite matyti kaip vieną „Big Data“ saugojimo vienetą, bet iš tikrųjų duomenis saugote keliuose mazguose paskirstytu būdu. Čia jūs turite šeimininko ir vergo architektūrą. HDFS Namenode yra pagrindinis mazgas, o Datanodes yra vergai.

NameNode

Būtent pagrindinis demonas prižiūri ir valdo „DataNodes“ (vergo mazgus). Jame įrašomi visų klasteryje saugomų failų metaduomenys, pvz. saugomų blokų vieta, failų dydis, leidimai, hierarchija ir kt. Jame įrašomi visi failų sistemos metaduomenų pakeitimai.



Pavyzdžiui, jei failas ištrinamas iš HDFS, „NameNode“ tai nedelsiant įrašys į „EditLog“. Ji reguliariai gauna širdies plakimo ir blokavimo ataskaitą iš visų sankaupos „DataNodes“, kad būtų užtikrinta, jog „DataNodes“ veikia. Jis registruoja visus HDFS blokus ir kuriuose mazguose šie blokai saugomi.

„DataNode“

Tai yra vergų demonai, kurie veikia kiekvienoje vergo mašinoje. Faktiniai duomenys saugomi „DataNodes“. Jie yra atsakingi už klientų skaitymo ir rašymo užklausų aptarnavimą. Jie taip pat yra atsakingi už blokų kūrimą, blokų ištrynimą ir jų atkartojimą pagal „NameNode“ priimtus sprendimus.

HDFS - „Apache Spark“ prieš „Hadoop“ - „Edureka“Verpalai

YARN atlieka visas jūsų apdorojimo veiklas, paskirstydamas išteklius ir planuodamas užduotis. Jis turi du pagrindinius demonus, t.y. „ResourceManager“ ir „NodeManager“ .



„ResourceManager“

Tai yra klasterio lygio (po vieną kiekvienam klasteriui) komponentas, veikiantis pagrindinėje mašinoje. Jis tvarko išteklius ir planuoja programas, veikiančias ant YARN.

„NodeManager“

Tai yra mazgo lygio komponentas (po vieną kiekviename mazge) ir veikia kiekvienoje vergo mašinoje. Ji yra atsakinga už konteinerių valdymą ir išteklių naudojimo stebėjimą kiekviename konteineryje. Ji taip pat stebi mazgų būklę ir žurnalų tvarkymą. Jis nuolat bendrauja su „ResourceManager“, kad būtų nuolat atnaujinamas. Taigi, lygiagrečiai HDFS galite apdoroti naudodami „MapReduce“.

Norėdami sužinoti daugiau apie „Hadoop“, galite tai išbandyti dienoraštis. Dabar, kai visi esame pasiruošę pristatyti „Hadoop“, pereikime prie „Spark“ pristatymo.

Apache Spark vs Hadoop: Įvadas į Apache Spark

„Apache Spark“ yra duomenų analizės realiuoju laiku sistema paskirstytoje skaičiavimo aplinkoje. Norint padidinti duomenų apdorojimo greitį, atliekami atminties skaičiavimai. Didesnio masto duomenų apdorojimas yra greitesnis, nes jame naudojami skaičiavimai atmintyje ir kiti optimizavimai. Todėl tam reikia didelės apdorojimo galios.

Elastingas paskirstytas duomenų rinkinys (RDD) yra pagrindinė „Spark“ duomenų struktūra. Tai nekintama paskirstyta objektų kolekcija. Kiekvienas RDD duomenų rinkinys yra padalintas į loginius skaidinius, kurie gali būti apskaičiuojami skirtinguose klasterio mazguose. RDD gali būti bet kokio tipo „Python“, „Java“ ar „Scala“ objektai, įskaitant vartotojo apibrėžtas klases. Kibirkščių komponentai leidžia greitai ir patikimai. „Apache Spark“ turi šiuos komponentus:

  1. Kibirkšties šerdis - „Spark Core“ yra pagrindinis variklis, skirtas didelio masto lygiagrečiam ir paskirstytam duomenų apdorojimui. Be to, papildomos bibliotekos, sukurtos pagrindiniame viršuje, leidžia įvairiai perduoti srautinį, SQL ir mašininį mokymąsi. Jis atsakingas už atminties valdymą ir gedimų atkūrimą, darbų planavimą, paskirstymą ir stebėjimą klasteriuose ir sąveiką su saugojimo sistemomis.
  2. „Spark Streaming“ - „Spark Streaming“ yra „Spark“ komponentas, naudojamas apdorojant srauto duomenis realiuoju laiku. Taigi, tai yra naudingas pagrindinės „Spark“ API priedas. Tai leidžia apdoroti tiesioginius duomenų srautus su dideliu pralaidumu ir atspariu gedimams
  3. „Spark SQL“ : „Spark SQL“ yra naujas „Spark“ modulis, integruojantis reliacinį apdorojimą su „Spark“ funkcinio programavimo API. Jis palaiko duomenų paiešką naudojant SQL arba „Hive Query Language“. Tiems, kurie žino RDBMS, „Spark SQL“ bus lengvas perėjimas nuo ankstesnių įrankių, kur galėsite išplėsti tradicinio reliacinio duomenų apdorojimo ribas.
  4. „GraphX“ : „GraphX“ yra „Spark“ API grafikams ir lygiagrečiam grafikų skaičiavimams. Taigi, jis išplečia „Spark RDD“ naudodamas atsparaus paskirstyto turto grafiką. Aukštu lygiu „GraphX“ išplečia „Spark RDD“ abstrakciją pristatydamas „Resilient Distributed Property Graph“: nukreiptą multigrafą su savybėmis, pritvirtintomis prie kiekvienos viršūnės ir krašto.
  5. MLlib (Mašininis mokymasis): „MLlib“ reiškia mašininio mokymosi biblioteką. „Spark MLlib“ naudojamas mašininiam mokymuisi atlikti „Apache Spark“.

Kaip matote, „Spark“ yra supakuota su aukšto lygio bibliotekomis, įskaitant palaikymą R, SQL, Python, Scala, Java ir kt. Šios standartinės bibliotekos padidina vientisą sudėtingos darbo eigos integraciją. Be to, jis taip pat leidžia įvairiems paslaugų rinkiniams integruoti su juo, pvz., „MLlib“, „GraphX“, „SQL + Data Frames“, srautinio perdavimo paslaugas ir kt., Kad padidintų savo galimybes.

Norėdami sužinoti daugiau apie „Apache Spark“, galite tai išbandyti dienoraštis. Dabar „Apache Spark“ ir „Hadoop“ yra pasirengusios. Eikime į priekį ir palyginkime „Apache Spark“ su „Hadoop“ pagal skirtingus parametrus, kad suprastume jų stipriąsias puses.

maišos lentelės ir maišos žemėlapio skirtumas

„Apache Spark“ prieš „Hadoop“: Parametrai, kuriuos reikia palyginti

Spektaklis

Kibirkštis yra greita, nes ji apdorojama atmintyje. Jis taip pat gali naudoti diską duomenims, kurie netelpa į atmintį. „Spark“ atmintyje apdorojimas teikia beveik realiuoju laiku atliekamą analizę. Dėl to „Spark“ tinka kreditinių kortelių apdorojimo sistemai, mašininiam mokymuisi, saugumo analizei ir daiktų interneto jutikliams.

Iš pradžių „Hadoop“ buvo sukonfigūruotas nuolat rinkti duomenis iš kelių šaltinių, nesijaudindamas dėl duomenų tipo ir saugodamas juos paskirstytoje aplinkoje. „MapReduce“ naudoja paketinį apdorojimą. „MapReduce“ niekada nebuvo sukurtas apdoroti realiuoju laiku, pagrindinė „YARN“ idėja yra lygiagretus apdorojimas per paskirstytą duomenų rinkinį.

Jų palyginimo problema yra ta, kad jie apdoroja skirtingai.

Lengva naudoti

„Spark“ yra su patogiomis „Scala“, „Java“, „Python“ ir „Spark SQL“ API. „Spark SQL“ yra labai panaši į „SQL“, todėl SQL kūrėjams tampa lengviau ją išmokti. „Spark“ taip pat suteikia interaktyvų apvalkalą, skirtą kūrėjams pateikti užklausas ir atlikti kitus veiksmus bei nedelsiant gauti atsiliepimų.

Duomenis „Hadoop“ galite lengvai įsisavinti naudodami apvalkalą arba integruodami juos su keliais įrankiais, tokiais kaip „Sqoop“, „Flume“ ir kt.. Verpalai yra tik apdorojimo sistema ir juos galima integruoti su keliais įrankiais, tokiais kaip „Hive“ ir „Pig“. HIVE yra duomenų saugyklos komponentas, kuris naudoja didelių duomenų rinkinių skaitymą, rašymą ir valdymą paskirstytoje aplinkoje, naudodamasis į SQL panašią sąsają. Galite tai išgyventi Hadoopo ekosistema tinklaraštyje, kad sužinotumėte apie įvairias priemones, kurias galima integruoti su „Hadoop“.

Išlaidos

„Hadoop“ ir „Spark“ yra atvirojo kodo „Apache“ projektai, todėl programinė įranga nekainuoja. Kaina siejama tik su infrastruktūra. Abu produktai yra suprojektuoti taip, kad juos būtų galima naudoti su aparatine įranga, turinčia mažą TCO.

Dabar jums gali būti įdomu, kaip jie skiriasi. „Hadoop“ saugojimas ir apdorojimas yra pagrįstas disku, o „Hadoop“ naudoja standartinius atminties kiekius. Taigi, su „Hadoop“ mums reikia daug vietos diske, taip pat greitesnių diskų. „Hadoop“ taip pat reikalingos kelios sistemos disko įvesties / išvesties platinimui.

Dėl „Apache Spark“ atminties apdorojimo reikia daug atminties, tačiau ji gali apdoroti standartinį greitį ir disko kiekį. Kadangi disko vieta yra palyginti nebrangi prekė ir kadangi „Spark“ nenaudoja disko įvesties / išvesties apdorojimui, tam reikia daug RAM, kad viskas būtų vykdoma atmintyje. Taigi, „Spark“ sistema patiria daugiau išlaidų.

Bet taip, vienas svarbus dalykas, kurį reikia nepamiršti, yra tai, kad „Spark“ technologija sumažina reikalingų sistemų skaičių. Jai reikia žymiai mažiau sistemų, kurios kainuoja daugiau. Taigi, bus taškas, kuriame „Spark“ sumažins išlaidas už skaičiavimo vienetą, net jei reikės papildomo RAM.

Duomenų apdorojimas

Yra du duomenų apdorojimo tipai: paketinis apdorojimas ir srauto apdorojimas.

Paketinis ir srauto apdorojimas

Paketinis apdorojimas : Paketinis apdorojimas buvo labai svarbus didžiųjų duomenų pasaulyje. Paprasčiau tariant, paketinis apdorojimas yra didelis duomenų kiekis, surinktas per tam tikrą laikotarpį. Atliekant paketinį apdorojimą, duomenys pirmiausia surenkami, o vėliau gaunami apdoroti rezultatai.

kas yra duomenys moksle

Paketinis apdorojimas yra efektyvus didelių, statinių duomenų rinkinių apdorojimo būdas. Paprastai mes atliekame paketinį archyvuotų duomenų rinkinių apdorojimą. Pavyzdžiui, apskaičiuojant vidutines šalies pajamas arba įvertinant elektroninės prekybos pokyčius per pastarąjį dešimtmetį.

Srauto apdorojimas : Srauto apdorojimas yra dabartinė tendencija didžiųjų duomenų pasaulyje. Valandos poreikis yra greitis ir informacija realiuoju laiku, tai ir daro garų apdorojimas. Paketinis apdorojimas neleidžia įmonėms greitai reaguoti į besikeičiančius verslo poreikius realiuoju laiku, srauto apdorojimas paklausa sparčiai auga.

Dabar grįžtama prie „Apache Spark vs Hadoop“, YARN iš esmės yra paketinio apdorojimo sistema. Kai mes pateikiame darbą YARN, jis nuskaito duomenis iš sankaupos, atlieka operaciją ir vėl įrašo rezultatus į grupę. Tada jis vėl nuskaito atnaujintus duomenis, atlieka kitą operaciją ir vėl įrašo rezultatus į grupę ir pan.

„Spark“ atlieka panašias operacijas, tačiau naudoja atminties apdorojimą ir optimizuoja veiksmus. „GraphX“ leidžia vartotojams peržiūrėti tuos pačius duomenis kaip grafikus ir kaip kolekcijas. Vartotojai taip pat gali transformuoti ir sujungti grafikus naudodami tamprius paskirstytus duomenų rinkinius (RDD).

Gedimų tolerancija

Hadoopas ir Sparkas toleruoja gedimus, tačiau jų požiūris skiriasi. HDFS ir YARN atveju, pagrindiniai demonai (t. Y. Atitinkamai „NameNode“ ir „ResourceManager“) tikrina vergų demonų (t. Y. „DataNode“ ir „NodeManager“) širdies ritmą. Jei kuris nors vergo demonas nepavyksta, pagrindiniai demonai visas laukiančias ir vykdomas operacijas perkelia kitam vergui. Šis metodas yra efektyvus, tačiau taip pat gali žymiai pailginti operacijų su vienu gedimu užbaigimo laiką. Kadangi Hadoopas naudoja prekių aparatinę įrangą, kitas būdas, kaip HDFS užtikrina toleranciją gedimams, yra duomenų atkartojimas.

Kaip aptarėme aukščiau, RDD yra „Apache Spark“ pagrindas. RDD suteikia „Spark“ atsparumą gedimams. Jie gali nurodyti bet kurį duomenų rinkinį, esantį išorinėje atminties sistemoje, pvz., HDFS, HBase, bendrą failų sistemą. Jie gali būti valdomi lygiagrečiai.

RDD gali išsaugoti duomenų rinkinį atmintyje visose operacijose, o tai padaro būsimus veiksmus 10 kartų žymiai greitesnius. Jei RDD pametamas, jis bus automatiškai perskaičiuotas naudojant pradines transformacijas. Taip „Spark“ suteikia atsparumą gedimams.

Saugumas

„Hadoop“ palaiko „Kerberos“ tapatybės nustatymą, tačiau tai sunku valdyti. Nepaisant to, jis taip pat palaiko trečiųjų šalių tiekėjus, pvz., LDAP („Lightweight Directory Access Protocol“), kad būtų galima autentifikuoti. Jie taip pat siūlo šifravimą. HDFS palaiko tradicinius failų leidimus, taip pat prieigos kontrolės sąrašus (ACL). „Hadoop“ teikia paslaugų lygio įgaliojimą, kuris garantuoja, kad klientai turi reikiamus leidimus pateikti darbą.

Šiuo metu „Spark“ palaiko autentifikavimą per bendrą paslaptį. „Spark“ gali integruotis su HDFS, ji gali naudoti HDFS ACL ir failo lygio leidimus. „Spark“ taip pat gali veikti „YARN“, išnaudodamas „Kerberos“ galimybes.

Naudojimo atvejai, kai „Hadoop“ tinka geriausiai:

  • Analizuojami archyvo duomenys. YARN leidžia lygiagrečiai apdoroti didžiulius duomenų kiekius. Duomenų dalys yra apdorojamos lygiagrečiai ir atskirai, naudojant skirtingus „DataNodes“, ir renkami kiekvieno „NodeManager“ rezultatai.
  • Jei nereikia greitų rezultatų. „Hadoop MapReduce“ yra geras ir ekonomiškas paketinio apdorojimo sprendimas.

Naudojimo atvejai, kai „Spark“ tinka geriausiai:

Realaus laiko didelių duomenų analizė:

Duomenų analizė realiuoju laiku reiškia realiuoju laiku vykstančių įvykių srautų sugeneruotų duomenų apdorojimą milijonais įvykių per sekundę greičiu, pavyzdžiui, „Twitter“ duomenis. „Spark“ stiprybė slypi jos sugebėjimuose palaikyti duomenų srautą ir paskirstytą apdorojimą. Tai naudingas derinys, užtikrinantis beveik realaus laiko duomenų apdorojimą. „MapReduce“ neturi tokio pranašumo, nes buvo sukurtas atlikti paketinį paskirstytą apdorojimą dideliu duomenų kiekiu. Duomenis realiuoju laiku vis tiek galima apdoroti „MapReduce“, tačiau jų greitis nė iš tolo neprilygsta „Spark“ greičiui.

„Spark“ teigia, kad duomenis apdoroja 100 kartų greičiau nei „MapReduce“, o 10 kartų greičiau su diskais.

Diagramų apdorojimas:

Dauguma diagramų apdorojimo algoritmų, pvz., Puslapio reitingas, atlieka kelis kartojimus per tuos pačius duomenis ir tam reikia pranešimo perdavimo mechanizmo. Turime aiškiai užprogramuoti „MapReduce“, kad galėtume tvarkyti tokias pat kartotines per tuos pačius duomenis. Apytiksliai tai veikia taip: nuskaitykite duomenis iš disko ir atlikę tam tikrą iteraciją, įrašykite rezultatus į HDFS, tada perskaitykite duomenis iš HDFS kitai iteracijai. Tai yra labai neefektyvu, nes reikia nuskaityti ir įrašyti duomenis į diską, kuris apima sunkias įvesties / išvesties operacijas ir duomenų replikavimą visame klasteryje, kad būtų galima toleruoti gedimus. Be to, kiekviena „MapReduce“ kartojimo vėlavimo trukmė yra labai didelė, o kitą kartojimą galima pradėti tik visiškai užbaigus ankstesnę užduotį.

Be to, norint perduoti pranešimą, reikia įvertinti kaimyninių mazgų balus, kad būtų galima įvertinti konkretaus mazgo balus. Šiems skaičiavimams reikalingi kaimynų pranešimai (arba duomenys keliuose darbo etapuose) - mechanizmo, kurio trūksta „MapReduce“. Skirtingi grafikų apdorojimo įrankiai, tokie kaip „Pregel“ ir „GraphLab“, buvo sukurti siekiant patenkinti efektyvios grafų apdorojimo algoritmų platformos poreikį. Šios priemonės yra greitos ir keičiamos, tačiau nėra efektyvios kuriant ir apdorojant šiuos sudėtingus daugiapakopius algoritmus.

„Apache Spark“ pristatymas šias problemas labai išsprendė. „Spark“ yra grafikų skaičiavimo biblioteka „GraphX“, kuri supaprastina mūsų gyvenimą. Skaičiavimas atmintyje kartu su įmontuotu grafikų palaikymu pagerina algoritmo našumą vienu ar dviem laipsniais, palyginti su tradicinėmis „MapReduce“ programomis. „Spark“ naudoja „Netty“ ir „Akka“ derinį pranešimams platinti vykdytojams. Pažvelkime į kai kuriuos statistinius duomenis, kurie vaizduoja „PageRank“ algoritmo našumą naudojant „Hadoop“ ir „Spark“.

Kartotiniai mašininio mokymosi algoritmai:

Beveik visi mašininio mokymosi algoritmai veikia iteratyviai. Kaip matėme anksčiau, iteraciniai algoritmai įtraukia įvesties / išvesties trūkumus „MapReduce“ diegimuose. MapReduce naudoja šiurkščiavilnių užduočių (užduoties lygiagretumas), kurios yra per sunkios iteraciniams algoritmams. „Spark“ naudodamas „Mesos“ - paskirstytą sistemos branduolį, talpina tarpinį duomenų rinkinį po kiekvienos iteracijos ir paleidžia kelis pakartojimus šiame talpykloje esančiame duomenų rinkinyje, kuris sumažina įvestį ir išvestį ir padeda greičiau paleisti algoritmą, tolerantiškai veikiant gedimams.

kas yra „JavaScriptof“ indeksas

„Spark“ turi įmontuotą keičiamo dydžio mašininio mokymosi biblioteką, vadinamą „MLlib“, kurioje yra aukštos kokybės algoritmai, kurie naudoja iteracijas ir duoda geresnius rezultatus nei vieno priartinimo apytiksliai, kartais naudojami „MapReduce“.

  • Greitas duomenų apdorojimas. Kaip žinome, „Spark“ leidžia apdoroti atmintyje. Dėl to „Spark“ yra iki 100 kartų greitesnė, jei duomenys yra RAM atmintyje, ir iki 10 kartų, jei duomenys saugomi saugykloje.
  • Kartotinis apdorojimas. „Spark“ RDD leidžia atlikti kelias žemėlapio operacijas atmintyje, nereikia rašyti tarpinių duomenų rinkinių į diską.
  • Beveik realiuoju laiku apdorojama. „Kibirkštis“ yra puiki priemonė, leidžianti nedelsiant pateikti verslo įžvalgas. Tai yra priežastis, kodėl „Spark“ naudojama kredito kortelių srautinėje sistemoje.

„Apache Spark: Apache Hadoopo žudikas ar gelbėtojas?“

Atsakymas į tai - „Hadoop MapReduce“ ir „Apache Spark“ nekonkuruoja tarpusavyje. Tiesą sakant, jie gana gerai papildo vienas kitą. Hadoopas kontroliuoja didžiulius duomenų rinkinius prekių sistemose. „Spark“ suteikia galimybę realiu laiku apdoroti atmintyje tuos duomenų rinkinius, kuriems to reikia. Kai sujungsime „Apache Spark“ galimybes, t. Y. Didelę apdorojimo spartą, išankstinę analizę ir daugialypę integravimo palaikymą su „Hadoop“ pigia operacija prekių aparatinėje įrangoje, tai duos geriausius rezultatus. Hadoopas giria „Apache Spark“ galimybes. „Spark“ negali visiškai pakeisti „Hadoop“, tačiau gera žinia ta, kad „Spark“ paklausa šiuo metu yra aukščiausia! Tai tinkamas laikas įvaldyti „Spark“ ir maksimaliai išnaudoti savo karjeros galimybes. Pradėk dabar!

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime anksčiausiai.

Jei norite išmokti „Spark“ ir kurti karjerą „Spark“ srityje, kad atliktumėte didelio masto duomenų apdorojimą naudodami RDD, „Spark Streaming“, „SparkSQL“, „MLlib“, „GraphX“ ir „Scala“ su „Real Life“ naudojimo atvejais, peržiūrėkite mūsų interaktyvų tiesioginį internetą čia, su 24 * 7 palaikymu, kuris padės jums mokytis.