Spark vs Hadoop raamistikud: peamised erinevused

Apache Spark vs Hadoop MapReduce

Mõnikord on veebiarendajate töö võimatu ilma kümnete erinevate programmideta - platvormid, opsüsteemid ja raamistikud. Miljonitel kogenud programmeerijatel kogu maailmas on ainulaadsed programmeerimisoskused, kuid nende parandamine ilma spetsiaalsete platvormideta raamistiketa on ebareaalne. See sarnaneb pilvesalvestusega ja on loodud saidi, rakenduse või kontseptuaalse mudeli väljatöötamiseks. Võite proovida kirjutada programmikoodi ilma abimallideta, kuid see võtab liiga palju aega ja vaeva. Selles artiklis vaatleme kahe populaarse raamistiku peamisi eeliseid ja puudusi ning määrame teie jaoks parima. Nii et Spark vs Map Reduce - mis on parem?

Mis on Apache Spark - põhimõisted

Selle suuremahulise projekti esmakordne käivitamine Hadoopist toimus 30. mail 2014. Platvormi arendajad otsisid Java, Scala, Python, R. keelte jaoks mugavaimate adaptiivsete programmeerimisliideste loomist. Raamkood kirjutati Scalas ja natuke hiljem integreeriti osa elemendist Java-sse. Seega on platvormi kasutajatel võimalus töötada otse Java-s. See koosneb tuumast ja mitmetest laienditest, näiteks Spark SQL (võimaldab andmetega SQL-päringuid teha), Spark Streaming (voogesituse andmete töötlemiseks mõeldud lisand), Spark MLlib (masinõppekogude komplekt), GraphX (mõeldud hajutatud graafikutöötluseks). Piisavalt mugav kasutada Apache Spark töötab praegu 26. oktoobri 2018 kuupäevaga värskenduse kallal.

Apache Sparki arhitektuuriskeem - kas kõik on geniaalne lihtne?

Sparkit kasutatakse tavalise töölaua ja arhitektuuri kaudu. Link on klaster, mida haldab administraator teostatud tööde jälgimiseks. Süsteem, mis võimaldab palju arendustööga palju aega kokku hoida, on lihtne. Selle juht ja kõik esinejad saavad oma ülesanded oma Java-sse. Saate seda kasutada vertikaalses või horisontaalses klastris ning Apache Sparki sees on saadaval segakonfiguratsioon. Tasub kaaluda, et üks toote populaarsuse põhjuseid on selle arendamise võimalus mitmes keeles. API-süsteem on võrdselt mugav kõigi keelte jaoks, kuid kõige nõutum on Java.

Apache Spark ja selle kasutusjuhtumid

Spark on Apache'i projekt, mille eesmärk on kiirendada klastrite arvutamist, mis ei tööta sarnastes raamistikes piisavalt kiiresti. Projekti arendab jõudsalt arenev vaba kogukond, mis on praegu kõige aktiivsem Apache projektidest. Spark sisaldab täiustatud ja kiirendatud andmetöötlust, nii et see on pälvinud kogu maailmas professionaalide seas laialdase populaarsuse. Võrreldes Hadoopiga kiirendab Spark programmide tööd enam kui 100 korda ja kettale üle 10 korra. Apache Sparki uurimisel väärib märkimist veel üks oluline aspekt: ​​see pakub valmis interaktiivset kesta (REPL). REPL-i abil saate testida iga koodirea täitmise tulemust, ilma et peaksite kõigepealt programmi programmeerima ja kogu toimingu lõpule viima. Nii et valmiskoodi on võimalik kirjutada palju kiiremini, lisaks pakutakse andmete situatsioonianalüüsi.

Apache Spark-koodide näited

Spark on süsteem, mis võimaldab teil suurendada arendaja tootlikkust ning parandada selle toote kiirust ja funktsionaalsust. Projekti mitmekülgsus kohandub paljude programmeerimiskeeltega, ühendades paljud protsessid ühes raamistikus. Muidugi on Sparkil oma puudused: esiteks pole sellel ideaalset API-d. Näiteks võimaldab aegunud RDD rohkem ruumi arendaja vea jaoks, eriti kui see töötab mitte Java Beanidega, vaid Row'ga. Mida peate Spark vs Mapreduce kohta teadma? Mida suurem on andmemaht, seda keerukam see toode esmapilgul võib tunduda. Sellegipoolest on koodi kirjutamise protsess üsna läbipaistev. Vaatame mõnd andmesisestuse prototüüpi Sparki töötamisel:

val read: RDD [String] = rdd.map (someFunction)

või

def f (x: string): Int = ???

on parem kui

val read = rdd.map (someFunction)

ja lõpuks

def f (x: string) = ???

Apache Sparki raamistik: peamised keeled

Populaarne raamistik toetab 3 programmeerimiskeelt - Scala, Java ja Python. Tõenäoliselt on kõige mugavam töötada viimasena - see on üsna mugav otse Pythoni sülearvutis töötada. Seega edastatakse osa klastrist toodetud andmetest Pandase paketi abil, võtmata veebiarendajalt palju aega. Apache süsteem on võitnud paljude arendajate tunnustuse just selle mitmekülgsuse tõttu. Sõltumata ülesande keerukusest saab spetsialist kasutada tohutut raamistiku funktsionaalsust ja kõrvaldada kõik elemendikoodis olevad vead.

Apache Sparki etendus

Töö ajal saab Spark kasutada klastri maksimaalset võimsust, samuti RAM-i, ketast ja isegi protsessorit. See raamistik nõuab kasutaja arvutilt head jõudlust, nii et enne selle kallale asumist soovitame hankida vähemalt kahe protsessorituumaga arvuti. Sädet tuleb optimeerida - nii muutuvad selle komponendid tootlikumaks. Süsteemis on kvaliteetse töö jaoks soovitatav kasutada volframi - töö ajal kasutage sisseehitatud Spark SQL komponenti, mis tagab baidikoodide abil suurema jõudluse. Kasutage DataFramesi asemel andmekogude struktuure. Andmekogumi API Scala-ga (RDD asemel).

Apache Sparki eelised

Selle toote peamine kvaliteet on kasutuslihtsus ja üsna suur funktsioonide arv API-s. Paljud arendajad tunnevad, et Spark on arendusvahend, mis on mugavam kui klassikalisel kaardil Vähenda, ja veelgi mugavamad tööriistad, näiteks Apache Crunch jt. Väärib märkimist, et selle tarkvara ja Pythoni vahel Pandas töötades on maksimaalne lihtsus. Näib, et Apache lõi tahtlikult süsteemi mainitud programmide toetamiseks. Ka API DataSet on siin lahe. Pärast mõningast praktikat on selle funktsioone võimalik kasutada sama hõlpsalt kui SQL-is, täiendades seda oma UDF-failidega ja saavutades suurema paindlikkuse. UDF-sid on lihtsam kirjutada kui Hive'i puhul ja mõned raskused tekivad ainult keerukate andmestruktuuride tagastamisel ja siis Java-s ning pigem seetõttu, et Scala jaoks on oodata struktuure.

Mis on MapReduce?

Map Reduce on algoritm suure hulga tööandmete, näiteks indekseerijate või veebipäringute logide tulemuste paralleelseks töötlemiseks. Programm on veebiarendajate seas kuulsaks saanud keerukate ülesannete võimaliku käsitlemise tõttu. Selle algoritmi tüüpilisel rakendamisel on sisendina 3 elementi: algne kollektsioon, funktsioon Kaart, funktsioon Vähenda ja tagastab pärast töötlemist uue andmekogu. Algoritm koosneb mitmest etapist. Esimese sammuna täidetakse algse kollektsiooni iga elemendi jaoks funktsioon Kaardistamine. Kaart tagastab nulli või loob võtme- või väärtuseobjektide eksemplarid. Lisateave Mapreduce vs Spark kohta.

Hadoopi kaardi vähendamine: peamised eelised

Süsteemi peamine eelis seisneb HDFS-is. See on failisüsteem, mis võimaldab teil salvestada arendaja tooteandmeid mitte failitabelisse (mis võtab üsna palju arvutiruumi). Map Reduce pakub kasutajaandmete salvestamist spetsiaalses nimeserveris nimega NameNode. Sel juhul deponeeritakse andmed ise andmeserverisse - DataNode. Samuti väärib märkimist, et süsteemis kasutatavad andmed jagunevad 64- ja 128-megabaidisteks plokkideks ning server salvestab nende varukoopiad. Võite märgata, et Apache Spark vs Mapreduce ei oma unikaalseid omadusi, kuid see pole nii.

Turvalisus on Map Reduce'i kasutamisel peamine eelis. Statistiliste andmete kohaselt salvestab Map Reduce tarkvara taasinstalleerimise võimaliku andmete kaotuse korral kuni 99% kõigist failidest. Klassikaline Hadoopi klastri konfiguratsioon koosneb ühest nimeserverist, ühest Hadoopi MapReduce'i viisardist (nagu JobTracker) ja töömasinate komplektist, millest igaüks käitab samaaegselt andmeserverit (DataNode) ja töötajat (TaskTracker). Iga MapReduce'i töö koosneb kahest etapist:

  • Kaart - töötab paralleelselt ja (võimaluse korral) lokaalselt igas andmeplokis. Terabaitide andmeedastusprogrammi asemel kopeeritakse väike, kasutaja määratletud programm andmeserveritesse ja tehakse nendega kõike, mis ei vaja segamist ja andmete liikumist (shuffle);
  • Vähenda - täiendab kaarti koondatud toimingutega.

Kaart Vähendage süsteemi näiteid

MapReduce on struktuur, mis on loodud suurte andmemahtude tõhusaks töötlemiseks. Näiteks kui meil on andmestikus 1 miljon kontakti ja see on salvestatud relatsioonilises esituses, on väärtuste hankimine ja nendega mis tahes teisenduste tegemine väga kallis.

Näiteks, kasutades SQL-i ja võttes arvesse sünnikuupäeva, uurige, mitu inimest vanuses üle 30 aasta miljoni kirje kohta võtab mõne aja ja see suureneb päringu keerukuse kasvades vaid suurusjärgu võrra. Map Reduce pakub klastri juurutamist, kus andmeid töödeldakse hajutatud viisil.

MapReduce arhitektuur

HDFS sarnaneb muude traditsiooniliste failisüsteemidega: faile hoitakse plokkidena, plokkide ja failinimede vahel on vastendamine, toetatakse puustruktuuri, toetatakse õigustepõhist juurdepääsu mudelit jne.

Mõned erinevused HDFS-is võrreldes Apache Sparkiga:

  • Kavandatud suurte hulga (> 10 GB) failide salvestamiseks. Üks järeldus - suure ploki suurus võrreldes teiste failisüsteemidega (> 64 MB)
  • Optimeeritud toetama voogesituse juurdepääsu (kõrge vooga lugemine), hakkab juhuslike andmete lugemistoimingute jõud lonkama.
  • Keskendub suure hulga odavate serverite kasutamisele. Eelkõige kasutavad serverid RAID asemel JBOB-struktuuri (Lihtsalt hunnik ketast) - peegeldamine ja replikatsioon toimub klastri tasemel, mitte üksiku masina tasemel.
  • Paljud traditsioonilised hajutatud süsteemide probleemid on põimitud kavandisse - vaikimisi on üksikute sõlmede täielik rike täiesti normaalne ja loomulik töö, mitte midagi tavapärast.

Teisisõnu, selle raamistiku suuri erinevusi ülaltoodud näitest on raske märgata. MapReduce-diagrammil on oma eripärad - võrrelge neid lihtsalt oma platvormiga. Hadoopi vs Apache Sparki vastasseisus soovitatakse spetsialistil valida tööriist iseseisvalt, sõltuvalt tema ülesannete spektrist.

MapReduce etendused

Raamistiku loomisel arvestati peamise turusegmendi kitsalt suunatud spetsialiste, kes töötavad peamiselt Java-ga. Arendajaettevõte on tuvastanud mitu piirkonda, mille Map Reduce on saanud ja mida pidevalt uuendatakse:

  • Turvalisus - andmete varguste ennetamine ja juurdepääsu kontrollimine;
  • Tugi - dokumenteerimine ja nõustamine;
  • Analüüs - minimaalne analüüsifunktsioonide komplekt, mida ettevõte vajab;
  • Integreerimine - integratsioon pärandtoodete ja muude tootjate toodetega andmeedastuse või andmevahetuse eesmärgil.

Kasutades neid kategooriaid võrdluse alusena, põhjendavad artikli autorid äriliste Hadoopi toodete turuletoomise teostatavust suurandmete, näiteks InfoSphere BigInsights, analüüsimiseks, mitte lihtsate avatud lähtekoodiga rakenduste abil, kui rääkida Spark vs Hadoopist.

Hadoopi kaart vähenda vs sädet. Mida peate valima?

Vaatame põhiteesid kogu tekstimaterjalist ja aitame lugejal valida sobiv tööplatvorm.

Nad lahendavad erinevaid probleeme. Nii Hadoop kui ka Apache Spark on raamistik suurandmete töötlemiseks, kuid mõeldud erinevatel eesmärkidel. Hadoop moodustab tegelikult hajutatud andmete infrastruktuuri: suured andmekogud on jaotatud paljude sõlmede vahel, mis moodustavad standardserverite klastri. See tähendab, et te ei pea ostma ja hooldama kalleid spetsialiseeritud seadmeid. Hadoop indekseerib ja jälgib andmete olekut, muutes senisest tõhusama töötlemise ja analüüsi. Spark on andmetöötlusvahend. See võimaldab teil hajutatud andmekogumitega teha mitmesuguseid toiminguid, kuid ei paku nende hajutatud salvestusruumi.

Spark vs Mapreduce mõlemad etendused

Mõlemat neist kahest tehnoloogiast saab kasutada eraldi, viitamata teisele. Hadoop sisaldab lisaks Hadoopi hajutatud failisüsteemi salvestuskomponenti ka töötlemiskomponenti MapReduce, nii et töötlemist saab teha ilma Sparkita. Samamoodi saab Sparki kasutada ka ilma Hadoopita, kuid siiski on mõned erinevused. Sparkil pole oma failihaldussüsteemi, seega on vaja integreerimist kui mitte HDFS-iga, siis mõne muu pilvesalvestusplatvormiga. Kuid Spark, nii paljud inimesed arvavad, et parem on neid koos kasutada, kui räägime Hadoop vs Spark.

Säde on kiirem. Üldiselt on Spark jõudluses MapReduce'ist kaugel ees, kuna andmeid käsitletakse siin erinevalt. Kui MapReduce töötleb samm-sammulises režiimis, töötab Spark kogu andmekogumit ühe üksusena.

MapReduce töötab järgmiselt: andmed loetakse klastrist, viiakse läbi vajalik toiming, klastrisse kirjutatakse tulemused, klastrist loetakse värskendatud andmed, tehakse järgmine toiming, klastrisse kirjutatakse selle tulemused, jne, ”selgitab Booz Allen Hamiltoni peaanalüütik Kirk Bourne - Seevastu Spark teostab mälus kõiki analüütilisi operatsioone peaaegu reaalajas: andmed loetakse klastrist, tehakse vajalikud toimingud, seejärel kirjutatakse tulemused klaster, mille järel protsess on lõpule viidud. Paketitöötlusega edestab Spark MapReduce'i kümme korda ja mälu analüüsimisel sajaga.

Muud Spark vs Mapreduce omadused

Süütekiirus võib olla liiga suur. MapReduce'i jõudlus on reeglina täiesti piisav, kui töötate staatiliste andmetega ja võite oodata kogu paketi töötlemise lõpuleviimist. Kuid kui peate analüüsima tootmisruumides olevate sensorite voogesituse andmeid või rakendusi, mis nõuavad mitu toimingut, peate tõenäoliselt pöörduma Sparki poole Hadoopi ja Apache Sparki vahel. Enamik masinõppe algoritme nõuab näiteks mitut toimingut. Spark Apache'i abil lahendatud tüüpilised ülesanded hõlmavad reaalajas turunduskampaaniaid, tootesoovituste viivitamatut väljaandmist, küberturvalisuse analüüsi ja masinalogide jälgimist.

Hadoop vs Spark - lõpus

Suurõnnetuste tagajärjel taastumine on mõlemas tehnoloogias hästi rakendatud, ehkki neid kasutatakse erinevalt. Hadoop on süsteemirikete suhtes vastupidav, kuna pärast iga toimingu tegemist kirjutatakse andmed kettale ja Sparkiga taastatakse andmed tänu asjaolule, et andmeobjekte hoitakse klastris jaotatud komplektidena. "Andmeobjekte saab salvestada mällu või kettale ning RDD (Resilient Distributed Dataset) kontseptsioon tagab rikete või vigade korral täieliku taastumise," ütles Born.