Spark vs Hadoop: milline on parim suurandmete raamistik?

See ajaveebipostitus räägib apache sädemest vs hadoopist. See annab teile idee, milline on õige Big Data raamistik, mida erinevates stsenaariumides valida.

Alustan seda Apache Spark vs Hadoop blogi, tutvustades kõigepealt Hadoopi ja Sparki, et seadistada mõlema raamistiku jaoks õige kontekst. Seejärel võrdleme edasi nii suurandmete raamistikke erinevatel parameetritel, et analüüsida nende tugevusi ja nõrkusi.Kuid olenemata meie võrdluse tulemusest peaksite teadma, et nii Spark kui ka Hadoop on .



Apache Spark vs Hadoop: sissejuhatus Hadoopi

Hadoop on raamistik, mis võimaldab teil esmalt salvestada Big Data hajutatud keskkonda, et saaksite neid paralleelselt töödelda. Hadoopis on põhimõtteliselt kaks komponenti:



HDFS

HDFS loob ressursside abstraktsiooni, lubage mul seda teie jaoks lihtsustada. Sarnaselt virtualiseerimisega näete HDFS-i loogiliselt kui suurt üksust suurandmete salvestamiseks, kuid tegelikult salvestate oma andmeid hajutatud viisil mitme sõlme vahel. Siin on teil isand-ori arhitektuur. HDFS-is on Namenode põhisõlm ja Datanode on orjad.

NameNode

See on põhidemon, kes hooldab ja haldab DataNode'e (alamsõlmed). See salvestab kõigi klastrisse salvestatud failide metaandmed, nt. salvestatud plokkide asukoht, failide suurus, õigused, hierarhia jne. See salvestab kõik muudatused, mis toimuvad failisüsteemi metaandmetes.



Näiteks kui fail HDFS-is kustutatakse, salvestab NameNode selle kohe EditLogi. See saab regulaarselt kõigist klastri DataNodes'ist südamelöökide ja blokeerimisaruande, et tagada DataNode'i aktiivsus. See peab arvestust kõigi HDFS-i plokkide kohta ja millistes sõlmedes need plokid on salvestatud.

kuidas Pythonis objekti initsialiseerida

DataNode

Need on orjade deemonid, mis töötavad igal orjamasinal. Tegelikud andmed salvestatakse DataNodes. Nad vastutavad klientide lugemis- ja kirjutamistaotluste esitamise eest. Nad vastutavad ka plokkide loomise, plokkide kustutamise ja nende kopeerimise eest vastavalt NameNode'i otsustele.

HDFS - Apache Spark vs Hadoop - EdurekaLÕNG

YARN teostab kõik teie töötlemistoimingud ressursside eraldamise ja ülesannete ajastamise kaudu. Sellel on kaks suurt deemonit, s.t. ResourceManager ja NodeManager .



ResourceManager

See on klastritaseme (üks iga klastri kohta) komponent ja töötab põhimasinal. See haldab ressursse ja ajastab rakenduse YARN peal töötavaid rakendusi.

NodeManager

See on sõlme taseme komponent (üks igas sõlmes) ja töötab igas orjamasinas. Ta vastutab konteinerite haldamise ja ressursside kasutamise jälgimise eest igas konteineris. Samuti jälgib see sõlmede tervist ja logide haldamist. See ajakohasena püsimiseks suhtleb pidevalt ResourceManageriga. Nii saate HDFS-is paralleelselt töödelda MapReduce'i abil.

Hadoopi kohta lisateabe saamiseks võite selle läbi teha ajaveeb. Nüüd, kui meil on kõik Hadoopi tutvustus valmis, läheme edasi Sparki tutvustuse juurde.

Apache Spark vs Hadoop: sissejuhatus Apache Sparki

Apache Spark on raamistik reaalajas andmete analüüsimiseks hajutatud arvutuskeskkonnas. Andmete töötlemise kiiruse suurendamiseks teostatakse mälusisesed arvutused. See on suuremahuliste andmete töötlemiseks kiirem, kuna see kasutab ära mälus olevaid arvutusi ja muid optimeerimisi. Seetõttu nõuab see suurt töötlemisvõimsust.

Elastne hajutatud andmekogum (RDD) on Sparki põhiline andmestruktuur. See on muutumatu hajutatud esemete kogu. Iga RDD andmekogum on jagatud loogilisteks partitsioonideks, mida võib arvutada klastri erinevatel sõlmedel. RDD-d võivad sisaldada mis tahes tüüpi Pythoni, Java või Scala objekte, sealhulgas kasutaja määratletud klasse. Sädemekomponendid muudavad selle kiireks ja usaldusväärseks. Apache Sparkil on järgmised komponendid:

  1. Säde südamik - Spark Core on suuremahulise paralleelse ja hajutatud andmetöötluse alusmootor. Lisaks võimaldavad tuumale ehitatud täiendavad teegid voogesituse, SQL-i ja masinõppe jaoks erinevat töökoormust. See vastutab mäluhalduse ja rikete taastamise, klastris olevate tööde ajastamise, levitamise ja jälgimise ning salvestussüsteemidega suhtlemise eest.
  2. Säde voogesitus - Spark Streaming on Sparki komponent, mida kasutatakse reaalajas voogesituse andmete töötlemiseks. Seega on see kasulik lisa Sparki tuum API-le. See võimaldab reaalajas andmevoogude suure läbilaskevõimega ja tõrketaluvust
  3. Säde SQL : Spark SQL on uus moodul Sparkis, mis integreerib relatsioonitöötluse Sparki funktsionaalse programmeerimise API-ga. See toetab andmete pärimist kas SQLi või tarude päringukeele kaudu. Neile, kes tunnevad RDBMS-i, on Spark SQL hõlpsaks üleminekuks teie varasematest tööriistadest, kus saate laiendada traditsioonilise relatsioonilise andmetöötluse piire.
  4. GraafikX : GraphX ​​on graafikute ja graafidega paralleelsete arvutuste Sparki API. Seega laiendab see Spark RDD-d elastse hajutatud omaduste graafikuga. Kõrgel tasemel laiendab GraphX ​​Spark RDD abstraktsiooni, tuues sisse elastse hajutatud omaduste graafiku: suunatud multigraafi, mille omadused on kinnitatud igale tipule ja servale.
  5. MLlib (Masinõpe): MLlib tähistab masinõppe raamatukogu. Spark MLlibi kasutatakse masinõppe teostamiseks Apache Sparkis.

Nagu näete, on Sparki pakitud kõrgetasemelised teegid, sealhulgas R, SQL, Python, Scala, Java jne tugi. Need standardsed teegid suurendavad keeruka töövoo sujuvaid integreerimisi. Lisaks võimaldab see oma võimaluste suurendamiseks integreerida ka mitmesuguseid teenusekomplekte, näiteks MLlib, GraphX, SQL + Data Frames, voogedastusteenused jne.

Apache Sparki kohta lisateabe saamiseks võite selle läbi teha ajaveeb. Nüüd on maa Apache Sparki vs Hadoopi jaoks ette nähtud. Liigume edasi ja võrdleme Apache Sparki erinevate parameetritega Hadoopiga, et mõista nende tugevusi.

Apache Spark vs Hadoop: võrreldavad parameetrid

Performance

Säde on kiire, kuna sellel on mälusisene töötlus. Samuti saab ketast kasutada andmete jaoks, mis kõik mällu ei mahu. Sparki mälus töötlemine pakub peaaegu reaalajas analüüsi. See muudab Sparki sobivaks krediitkaarditöötlussüsteemi, masinõppe, turvalisuse analüüsi ja asjade Interneti andurite jaoks.

Algselt oli Hadoop seadistatud koguma andmeid pidevalt mitmest allikast, muretsemata andmete tüübi pärast ja säilitades neid hajutatud keskkonnas. MapReduce kasutab pakkide töötlemist. MapReduce'i ei ehitatud kunagi reaalajas töötlemiseks, YARN-i peamine idee on hajutatud andmekogumi paralleeltöötlus.

Nende kahe võrdlemise probleem on see, et nad töötlevad erinevalt.

Kasutuslihtsus

Sparkil on kasutajasõbralikud API-d Scala, Java, Python ja Spark SQL jaoks. Spark SQL on väga sarnane SQL-iga, nii et SQL-i arendajatel on seda lihtsam õppida. Spark pakub arendajatele ka interaktiivset kesta, et päringuid teha ja muid toiminguid teha ning tagasisidet saada.

Hadoopis saate andmeid hõlpsalt sisestada, kasutades kas shellit või integreerides need mitme tööriistaga, nagu Sqoop, Flume jne. LÕNG on lihtsalt töötlusraamistik ja seda saab integreerida mitme tööriistaga, nagu Hive ja Pig. HIVE on andmehoidla komponent, mis teostab SQL-i sarnase liidese abil suurte andmekogumite lugemist, kirjutamist ja haldamist hajutatud keskkonnas. Saate selle läbi elada Hadoopi ökosüsteem ajaveeb, et teada saada mitmesugustest tööriistadest, mida saab Hadoopiga integreerida.

Kulud

Hadoop ja Spark on mõlemad Apache'i avatud lähtekoodiga projektid, nii et tarkvara ei maksa. Maksumus on seotud ainult infrastruktuuriga. Mõlemad tooted on loodud nii, et neid saab kasutada madala TCO-ga kauba riistvaral.

Nüüd võite mõelda, kuidas need erinevad. Hadoopis salvestamine ja töötlemine toimub kettapõhiselt ning Hadoop kasutab standardset mälumahtu. Seega vajame Hadoopiga palju kettaruumi ja ka kiiremaid kettaid. Hadoop nõuab ka ketta sisend- ja väljundjaotuse levitamiseks mitut süsteemi.

Tänu Apache Sparki mälutöötlusele nõuab see palju mälu, kuid suudab toime tulla tavalise kiiruse ja ketta mahuga. Kuna kettaruum on suhteliselt odav kaup ja kuna Spark ei kasuta töötlemiseks ketta sisend- / väljundväljundit, nõuab see kõigi mälus olevate andmete täitmiseks suures koguses RAM-i. Seega on Sparki süsteemil rohkem kulusid.

Aga jah, üks oluline asi, mida meeles pidada, on see, et Sparki tehnoloogia vähendab vajalike süsteemide arvu. See vajab oluliselt vähem süsteeme, mis maksavad rohkem. Niisiis, on punkt, kus Spark vähendab arvutusühiku kulusid isegi täiendava RAM-i vajaduse korral.

Andmetöötlus

Andmetöötlust on kahte tüüpi: pakett- ja voogtöötlus.

Paketttöötlus vs voo töötlemine

Pakkide töötlemine : Partii töötlemine on olnud suurandmete maailmas ülioluline. Kõige lihtsamalt öeldes toimib paketttöötlus aja jooksul kogutud suurte andmemahtudega. Pakkide töötlemisel kogutakse kõigepealt andmed ja seejärel saadakse hiljem töödeldud tulemused.

Pakktöötlus on tõhus viis suurte staatiliste andmekogumite töötlemiseks. Üldiselt teostame arhiveeritud andmekogumite pakkide töötlemist. Näiteks riigi keskmise sissetuleku arvutamine või e-kaubanduse viimase kümnendi muutuse hindamine.

Voo töötlemine : Voogude töötlemine on suurandmete maailmas praegune trend. Tunni vajadus on kiirus ja reaalajas teave, mida aurutöötlus teeb. Pakettide töötlemine ei võimalda ettevõtetel muutuvatele ärivajadustele reaalajas kiiresti reageerida, voogtöötlus on nõudluse kiiret kasvu.

Nüüd tulles tagasi Apache Spark vs Hadoop juurde, on YARN põhimõtteliselt pakkide töötlemise raamistik. Kui esitame töö YARN-ile, loeb see klastri andmeid, sooritab operatsioone ja kirjutab tulemused klastrisse tagasi. Seejärel loeb see uuesti värskendatud andmeid, sooritab järgmise toimingu ja kirjutab tulemused klastrisse tagasi ja nii edasi.

Spark teeb sarnaseid toiminguid, kuid kasutab mälusisest töötlemist ja optimeerib samme. GraphX ​​võimaldab kasutajatel vaadata samu andmeid graafikute ja kogumitena. Kasutajad saavad graafikuid teisendada ja nendega liituda ka elastsete hajutatud andmekogumitega (RDD).

Veataluvus

Mõlemad Hadoop ja Spark tagavad tõrketaluvuse, kuid mõlemal on erinev lähenemine. Mõlemate HDFS-i ja YARN-i korral kontrollivad põhidemoonid (st vastavalt NameNode & ResourceManager) orjade deemonite (st vastavalt DataNode & NodeManager) südamelööke. Kui mõni orjadeemon ebaõnnestub, kavandavad deemonid kõik ootel olevad ja pooleliolevad toimingud teisele orjale. See meetod on tõhus, kuid see võib oluliselt pikendada ka ühe rikke korral toimingute lõpuleviimise aega. Kuna Hadoop kasutab kauba riistvara, on HDFS tõrketaluvuse tagamise viis andmete kopeerimisega.

Nagu me eespool arutlesime, on RDD-d Apache Sparki ehituskivid. RDD-d võimaldavad Sparki tõrketaluvust. Need võivad viidata mis tahes andmekogumile, mis on välises mälusüsteemis, näiteks HDFS, HBase, jagatud failisüsteem. Neid saab juhtida paralleelselt.

RDD-d võivad kogu operatsioonis mälus püsida andmekogumi, mis muudab tulevased toimingud kümme korda palju kiiremaks. Kui RDD kaotatakse, arvutatakse see automaatselt ümber, kasutades algseid teisendusi. Nii tagab Spark tõrketaluvuse.

Turvalisus

Hadoop toetab Kerberose autentimist, kuid seda on raske käsitseda. Sellest hoolimata toetab see autentimiseks ka kolmandate osapoolte teenusepakkujaid, nagu LDAP (kergekaaluline kataloogipääsuprotokoll). Nad pakuvad ka krüptimist. HDFS toetab tavapäraseid faililube, samuti juurdepääsu kontrollnimekirju (ACL). Hadoop pakub teenustaseme autoriseerimist, mis tagab, et klientidel on töö esitamiseks õiged õigused.

Spark toetab praegu autentimist jagatud saladuse kaudu. Spark saab integreeruda HDFS-iga ning ta saab kasutada HDFS-i ACL-sid ja failitaseme õigusi. Säde võib töötada ka YARNil, kasutades Kerberose võimeid.

Kasutusjuhud, kus Hadoop sobib kõige paremini:

  • Arhiiviandmete analüüsimine. LÕNG võimaldab tohutute andmete paralleelset töötlemist. Andmete osi töödeldakse paralleelselt ja eraldi kõigis NodeManageri erinevates andmesõlmedes ja kogutakse.
  • Kui koheseid tulemusi pole vaja. Hadoop MapReduce on partii töötlemiseks hea ja ökonoomne lahendus.

Kasutusjuhud, kus Spark sobib kõige paremini:

Reaalajas suurandmete analüüs:

Reaalajas andmete analüüs tähendab reaalajas toimuvate sündmuste voogude genereeritud andmete töötlemist kiirusega miljonid sündmused sekundis, näiteks Twitteri andmed. Sparki tugevus seisneb tema võimes toetada andmete voogesitust koos hajutatud töötlemisega. See on kasulik kombinatsioon, mis tagab andmete peaaegu reaalajas töötlemise. MapReduce'il on selline eelis puudega, kuna see oli kavandatud suure hulga andmete partiide kaupa jaotatud töötlemiseks. Reaalajas andmeid saab MapReduce'is siiski töödelda, kuid nende kiirus pole kuskil lähedal Sparki kiirusele.

Spark väidab, et töötleb andmeid 100x kiiremini kui MapReduce, samas kui ketastega 10x kiiremini.

Graafiku töötlemine:

Enamik graafide töötlemise algoritme, nagu lehe järjestus, teevad samade andmete kohta mitu kordust ja see nõuab sõnumi edastamise mehhanismi. Peame programmeerima MapReduce'i selgesõnaliselt, et sama andmete kordamine toimiks nii mitme kordusega. Laias laastus töötab see nii: lugege kettalt andmeid ja pärast teatud iteratsiooni kirjutage tulemused HDFS-i ja lugege HDFS-ist järgmise iteratsiooni jaoks andmeid. See on väga ebaefektiivne, kuna see hõlmab andmete lugemist ja kettale kirjutamist, mis hõlmab raskeid sisend- ja väljundoperatsioone ning andmete replikatsiooni kogu klastris tõrketaluvuse jaoks. Samuti on igal MapReduce iteratsioonil väga suur latentsus ja järgmine iteratsioon võib alata alles pärast eelmise töö täielikku lõpetamist.

Samuti nõuab sõnumi edastamine konkreetse sõlme skoori hindamiseks naabersõlmede hindeid. Need arvutused vajavad naabrite sõnumeid (või andmeid töö mitmel etapil) - mehhanism, millest MapReduce puudub. Erinevad graafide töötlemise tööriistad, nagu Pregel ja GraphLab, töötati välja selleks, et lahendada vajadus graafide töötlemise algoritmide tõhusa platvormi järele. Need tööriistad on kiired ja skaleeritavad, kuid ei ole nende keeruliste mitmeastmeliste algoritmide loomiseks ja järeltöötlemiseks tõhusad.

Apache Sparki kasutuselevõtt lahendas need probleemid suures osas. Spark sisaldab graafikute arvutamise teeki nimega GraphX, mis lihtsustab meie elu. Mälusisene arvutamine koos sisseehitatud graafikute toega parandab algoritmi jõudlust ühe või kahe kraadi võrra võrreldes traditsiooniliste MapReduce programmidega. Spark kasutab Netty ja Akka kombinatsiooni sõnumite levitamiseks kogu testamenditäitja juures. Vaatame statistikat, mis kujutab Hadoopi ja Sparki kasutades PageRanki algoritmi toimivust.

Iteratiivsed masinõppe algoritmid:

Peaaegu kõik masinõppe algoritmid töötavad iteratiivselt. Nagu me varem nägime, kaasavad iteratiivsed algoritmid MapReduce'i rakendustes I / O kitsaskohti. MapReduce kasutab jämedateralisi ülesandeid (ülesandetasandi paralleelsus), mis on iteratiivsete algoritmide jaoks liiga rasked. Säde Mesose abil - hajutatud süsteemituum, vahemälu andmekogumi vahemällu iga korduse järel ja käivitab sellel vahemällu salvestatud andmekogumil mitu iteratsiooni, mis vähendab sisend- ja väljundfunktsiooni ning aitab algoritmi tõrketaluval viisil kiiremini käivitada.

Sparkil on sisseehitatud skaleeritav masinõppe kogu MLlib, mis sisaldab kvaliteetseid algoritme, mis kasutavad iteratsioone ja annavad paremaid tulemusi kui MapReduce'is mõnikord kasutatud ühe läbimise ligikaudsed andmed.

  • Kiire andmetöötlus. Nagu me teame, võimaldab Spark mälus töötlemist. Seetõttu on Spark RAM-is olevate andmete puhul kuni 100 korda kiirem ja salvestatud andmete puhul kuni 10 korda kiirem.
  • Korduv töötlemine. Sparki RDD-d võimaldavad mälus teha mitmeid kaarditoiminguid, ilma et oleks vaja vaheandmekogumeid kettale kirjutada.
  • Reaalajas töötlemise lähedal. Spark on suurepärane vahend vahetu äriteabe pakkumiseks. See on põhjus, miks Sparki kasutatakse krediitkaardi voogesituse süsteemis.

'Apache Spark: Apache Hadoopi tapja või päästja?'

Vastus sellele - Hadoop MapReduce ja Apache Spark ei konkureeri omavahel. Tegelikult täiendavad nad üksteist üsna hästi. Hadoop viib kaubasüsteemid kontrolli alla tohutud andmekogumid. Spark pakub reaalajas mälus töötlemist nende andmekogumite jaoks, mis seda vajavad. Kui ühendame Apache Sparki võime, s.o suure töötlemiskiiruse, eelanalüütika ja mitmekordse integreerimise toe koos Hadoopi odava operatsiooniga kauba riistvaral, annab see parima tulemuse. Hadoop kiidab Apache Sparki võimalusi. Säde ei saa Hadoopi täielikult asendada, kuid hea uudis on see, et nõudlus Sparki järele on praegu kõigi aegade kõrgeim! See on õige aeg Sparki valdamiseks ja teile pakutavate karjäärivõimaluste maksimaalseks kasutamiseks. Alustage kohe!

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega kõige varem ühendust.

kuidas kasutada css spritte

Kui soovite õppida Sparki ja luua karjääri Sparki domeenis, et teostada suuremahulist andmetöötlust, kasutades RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​ja Scala koos Real Life kasutusjuhtumitega, vaadake meie interaktiivset otseülekannet veebis siin, kaasas 24 * 7 tugi, mis juhendab teid kogu õppeperioodi vältel.