Spark vs Hadoop: kurš ir labākais lielo datu satvars?



Šis emuāra ziņojums runā par apache spark vs hadoop. Tas sniegs jums priekšstatu par to, kuru pareizo Big Data sistēmu izvēlēties dažādos scenārijos.

Es sākšu šo Apache Spark vs Hadoop emuāru, vispirms ieviešot Hadoop un Spark, lai iestatītu pareizo kontekstu abiem ietvariem. Tad, virzoties uz priekšu, mēs salīdzināsim gan lielo datu ietvarus ar dažādiem parametriem, lai analizētu to stiprās un vājās puses.Lai arī kāds būtu mūsu salīdzināšanas rezultāts, jums jāzina, ka gan Spark, gan Hadoop ir būtiskas .

Apache Spark vs Hadoop: Ievads Hadoop

Hadoop ir sistēma, kas ļauj lielos datus vispirms uzglabāt izplatītā vidē, lai jūs tos varētu paralēli apstrādāt. Hadoop pamatā ir divi komponenti:





HDFS

HDFS rada resursu abstrakciju, ļaujiet man to vienkāršot jums. Līdzīgi kā virtualizācija, HDFS loģiski var redzēt kā vienu vienību lielo datu glabāšanai, bet patiesībā jūs datus glabājat vairākos mezglos sadalītā veidā. Šeit jums ir meistara-vergu arhitektūra. HDFS Namenode ir galvenais mezgls, un Datanodes ir vergi.

NameNode

Tas ir galvenais dēmons, kas uztur un pārvalda DataNodes (vergu mezglus). Tas reģistrē visu klasterī saglabāto failu metadatus, piem. glabāto bloku atrašanās vieta, failu lielums, atļaujas, hierarhija utt. Tas reģistrē visas izmaiņas, kas notiek failu sistēmas metadatos.



kā lietot skenera klasi

Piemēram, ja fails tiek izdzēsts HDFS, NameNode to nekavējoties ierakstīs EditLog. Tas regulāri saņem sirdsdarbības un bloķēšanas pārskatu no visiem klastera DataNodes, lai nodrošinātu datu mezglu darbību. Tas reģistrē visus HDFS blokus un kuros mezglos šie bloki tiek glabāti.

DataNode

Tie ir vergu dēmoni, kas darbojas ar katru vergu mašīnu. Faktiskie dati tiek glabāti DataNodes. Viņi ir atbildīgi par klientu lasīšanas un rakstīšanas pieprasījumu apkalpošanu. Viņi ir atbildīgi arī par bloku izveidi, bloku dzēšanu un to atkārtošanu, pamatojoties uz NameNode pieņemtajiem lēmumiem.

HDFS - Apache Spark vs Hadoop - EdurekaDzija

YARN veic visas apstrādes darbības, piešķirot resursus un plānojot uzdevumus. Tam ir divi galvenie dēmoni, t.i. ResourceManager un NodeManager .



ResourceManager

Tas ir klastera līmeņa (viens katram klasterim) komponents, un tas darbojas galvenajā mašīnā. Tas pārvalda resursus un ieplāno lietojumprogrammas, kas darbojas virs YARN.

NodeManager

Tas ir mezgla līmeņa komponents (pa vienam katrā mezglā) un darbojas katrā vergu mašīnā. Tas ir atbildīgs par konteineru pārvaldību un resursu izmantošanas uzraudzību katrā konteinerā. Tas arī seko mezglu veselībai un žurnālu pārvaldībai. Tā pastāvīgi sazinās ar ResourceManager, lai būtu atjaunināta. Tātad, izmantojot MapReduce, varat veikt paralēlu apstrādi HDFS.

Lai uzzinātu vairāk par Hadoop, varat to iziet emuārs. Tagad, kad mēs visi esam gatavi ieviest Hadoop, pārejiet pie Spark ieviešanas.

Apache Spark vs Hadoop: Ievads Apache Spark

Apache Spark ir sistēma reāllaika datu analīzei sadalītā skaitļošanas vidē. Tas veic atmiņas aprēķinus, lai palielinātu datu apstrādes ātrumu. Tā ir ātrāka liela mēroga datu apstrādei, jo tiek izmantoti atmiņā veiktie aprēķini un citas optimizācijas. Tāpēc tas prasa lielu apstrādes jaudu.

Elastīgā izplatītā datu kopa (RDD) ir fundamentāla Spark datu struktūra. Tā ir nemaināma izplatīta objektu kolekcija. Katra RDD datu kopa ir sadalīta loģiskās nodalījumos, kurus var aprēķināt dažādos klastera mezglos. RDD var saturēt jebkura veida Python, Java vai Scala objektus, ieskaitot lietotāja definētas klases. Dzirksteles komponenti padara to ātru un uzticamu. Apache Spark ir šādas sastāvdaļas:

  1. Dzirksteles kodols - Spark Core ir pamatmotors liela mēroga paralēlai un sadalītai datu apstrādei. Turklāt papildu bibliotēkas, kas ir uzceltas uz kodola, ļauj veikt dažādas straumēšanas, SQL un mašīnmācības slodzes. Tas ir atbildīgs par atmiņas pārvaldību un kļūdu atkopšanu, darbu plānošanu, sadali un uzraudzību kopā un mijiedarbību ar atmiņas sistēmām
  2. Dzirksteļu straumēšana - Spark Streaming ir Spark sastāvdaļa, ko izmanto reāllaika straumēšanas datu apstrādei. Tādējādi tas ir noderīgs papildinājums galvenajai Spark API. Tas ļauj apstrādāt tiešraides datu plūsmas ar lielu caurlaidspēju un kļūdu toleranci
  3. Spark SQL : Spark SQL ir jauns Spark modulis, kas integrē relāciju apstrādi ar Spark funkcionālās programmēšanas API. Tas atbalsta datu vaicāšanu, izmantojot SQL vai Hive Query Language. Tiem, kas pārzina RDBMS, Spark SQL būs ērta pāreja no jūsu iepriekšējiem rīkiem, kur jūs varat paplašināt tradicionālo relāciju datu apstrādes robežas.
  4. GraphX : GraphX ​​ir Spark API grafikiem un grafiku paralēlai aprēķināšanai. Tādējādi tas paplašina Spark RDD ar elastīga izplatītā īpašuma grafiku. Augstā līmenī GraphX ​​paplašina Spark RDD abstrakciju, ieviešot Resilient Distributed Property Graph: virzītu multigrafu ar īpašībām, kas piestiprinātas katrai virsotnei un malai.
  5. MLlib (Mašīnmācība): MLlib nozīmē mašīnmācīšanās bibliotēku. Spark MLlib tiek izmantots, lai veiktu mašīnmācīšanos Apache Spark.

Kā redzat, Spark ir aprīkots ar augsta līmeņa bibliotēkām, ieskaitot atbalstu R, SQL, Python, Scala, Java utt. Šīs standarta bibliotēkas palielina vienmērīgu integrāciju sarežģītā darbplūsmā. Turklāt tas ļauj arī integrēt dažādus pakalpojumu komplektus, piemēram, MLlib, GraphX, SQL + Data Frames, straumēšanas pakalpojumus utt., Lai palielinātu tā iespējas.

Lai uzzinātu vairāk par Apache Spark, varat to iziet emuārs. Tagad pamats ir noteikts Apache Spark vs Hadoop. Pārejam uz priekšu un salīdzinām Apache Spark ar Hadoop par dažādiem parametriem, lai saprastu to stiprās puses.

Apache Spark vs Hadoop: Salīdzināmie parametri

Izrāde

Dzirksts ir ātrs, jo tam ir atmiņas apstrāde. Tas var arī izmantot disku datiem, kas ne visi ietilpst atmiņā. Spark atmiņā esošā apstrāde nodrošina gandrīz reāllaika analīzi. Tas padara Spark piemērotu kredītkaršu apstrādes sistēmai, mašīnmācībai, drošības analīzei un lietu interneta sensoriem.

Sākotnēji Hadoop tika iestatīts, lai nepārtraukti apkopotu datus no vairākiem avotiem, neuztraucoties par datu veidu un uzglabājot tos izplatītajā vidē. MapReduce izmanto pakešu apstrādi. MapReduce nekad netika veidots reāllaika apstrādei, galvenā YARN ideja ir paralēla apstrāde pa izplatīto datu kopu.

Abu salīdzināšanas problēma ir tā, ka tie veic apstrādi atšķirīgi.

Lietošanas ērtums

Spark nāk ar lietotājam draudzīgiem API saskarnēm Scala, Java, Python un Spark SQL. Spark SQL ir ļoti līdzīgs SQL, tāpēc SQL izstrādātājiem to kļūst vieglāk iemācīties. Spark nodrošina arī interaktīvu apvalku, lai izstrādātāji varētu vaicāt un veikt citas darbības, kā arī saņemt tūlītēju atgriezenisko saiti.

Datus Hadoop var viegli uzņemt, izmantojot apvalku vai integrējot tos ar vairākiem rīkiem, piemēram, Sqoop, Flume uc. Dzija ir tikai apstrādes sistēma, un to var integrēt ar vairākiem rīkiem, piemēram, Hive un Pig. HIVE ir datu noliktavas komponents, kas veic lielu datu kopu lasīšanu, rakstīšanu un pārvaldīšanu izplatītā vidē, izmantojot SQL līdzīgu saskarni. Jūs to varat iziet cauri Hadopa ekosistēma emuāru, lai uzzinātu par dažādiem rīkiem, kurus var integrēt ar Hadoop.

Izmaksas

Hadoop un Spark ir abi Apache atvērtā pirmkoda projekti, tāpēc programmatūrai nav jāmaksā. Izmaksas ir saistītas tikai ar infrastruktūru. Abi produkti ir veidoti tā, lai tos varētu darbināt ar preču aparatūru ar zemu TCO.

Tagad jums var rasties jautājums, kā viņi atšķiras. Uzglabāšana un apstrāde Hadoop ir balstīta uz disku, un Hadoop izmanto standarta atmiņas apjomus. Tātad, izmantojot Hadoop, mums ir nepieciešams daudz vietas diskā, kā arī ātrāki diski. Hadoop prasa arī vairākas sistēmas diska I / O izplatīšanai.

Apache Spark atmiņas apstrādes dēļ tas prasa daudz atmiņas, taču tas var tikt galā ar standarta ātrumu un diska daudzumu. Tā kā diska vieta ir salīdzinoši lēta prece un tā kā Spark apstrādei neizmanto diska I / O, tā vietā visa atmiņā izpildīšanai ir nepieciešams liels RAM apjoms. Tādējādi Spark sistēmai rodas lielākas izmaksas.

Bet jā, viena svarīga lieta, kas jāpatur prātā, ir tā, ka Spark tehnoloģija samazina nepieciešamo sistēmu skaitu. Tam vajag ievērojami mazāk sistēmu, kas maksā vairāk. Tātad, būs punkts, kurā Spark samazina izmaksas par aprēķina vienību pat ar papildu RAM prasību.

Datu apstrāde

Ir divi datu apstrādes veidi: pakešapstrāde un straumes apstrāde.

Sērijas apstrāde vs straumes apstrāde

Partijas apstrāde : Pakešu apstrādei ir bijusi izšķiroša nozīme lielo datu pasaulē. Vienkāršāk sakot, pakešapstrāde darbojas ar lielu datu apjomu, kas savākts noteiktā laika periodā. Sērijveida apstrādē dati vispirms tiek savākti un pēc tam apstrādātie rezultāti tiek iegūti vēlāk.

Partijas apstrāde ir efektīvs veids, kā apstrādāt lielas, statiskas datu kopas. Parasti mēs veicam arhivēto datu kopu sērijveida apstrādi. Piemēram, aprēķinot valsts vidējos ienākumus vai novērtējot e-komercijas izmaiņas pēdējās desmitgades laikā.

Straumes apstrāde : Straumes apstrāde ir pašreizējā tendence lielo datu pasaulē. Stundas nepieciešamība ir ātrums un reāllaika informācija, ko dara tvaika apstrāde. Sērijveida apstrāde neļauj uzņēmumiem ātri reaģēt uz mainīgajām biznesa vajadzībām reāllaikā, straumēšanas apstrādē ir strauji pieaudzis pieprasījums.

Tagad, atgriežoties pie Apache Spark vs Hadoop, YARN būtībā ir sērijveida apstrādes sistēma. Kad mēs iesniedzam darbu YARN, tas nolasa datus no klastera, veic operāciju un uzraksta rezultātus atpakaļ klasterī. Pēc tam tā atkal nolasa atjauninātos datus, veic nākamo darbību un rezultātus atkal raksta kopā un tā tālāk.

Spark veic līdzīgas darbības, taču tā izmanto atmiņā esošu apstrādi un optimizē darbības. GraphX ​​ļauj lietotājiem skatīt tos pašus datus kā grafikus un kā kolekcijas. Lietotāji var arī pārveidot un pievienoties diagrammām, izmantojot elastīgās izplatītās datu kopas (RDD).

Kļūdu tolerance

Hadoop un Spark abi nodrošina kļūdu toleranci, taču abiem ir atšķirīga pieeja. HDFS un YARN abiem galvenie dēmoni (t.i., attiecīgi NameNode & ResourceManager) pārbauda vergu dēmonu (t.i., attiecīgi DataNode & NodeManager) sirdsdarbību. Ja kāds vergu dēmons neizdodas, galvenie dēmoni visas gaidošās un nepabeigtās darbības pārplāno citā vergā. Šī metode ir efektīva, taču tā var ievērojami palielināt pabeigšanas laiku arī darbībām ar vienu kļūmi. Tā kā Hadoop izmanto preču aparatūru, vēl viens veids, kā HDFS nodrošina kļūdu toleranci, ir datu kopēšana.

Kā mēs apspriedām iepriekš, RDD ir Apache Spark celtniecības bloki. RDD nodrošina kļūdu toleranci Spark. Tie var atsaukties uz jebkuru datu kopu, kas atrodas ārējā atmiņas sistēmā, piemēram, HDFS, HBase, koplietojamo failu sistēmu. Tos var darbināt paralēli.

RDD var saglabāt datu kopu atmiņā visās operācijās, kas turpmākās darbības padara 10 reizes daudz ātrākas. Ja RDD tiek pazaudēts, tas tiks automātiski pārrēķināts, izmantojot sākotnējās transformācijas. Šādi Spark nodrošina izturību pret kļūdām.

Drošība

Hadoop atbalsta Kerberos autentifikāciju, taču to ir grūti apstrādāt. Neskatoties uz to, tas arī autentificēšanai atbalsta trešo pušu piegādātājus, piemēram, LDAP (Lightweight Directory Access Protocol). Viņi piedāvā arī šifrēšanu. HDFS atbalsta tradicionālās failu atļaujas, kā arī piekļuves kontroles sarakstus (ACL). Hadoop nodrošina pakalpojuma līmeņa autorizāciju, kas garantē, ka klientiem ir pareizas atļaujas darba iesniegšanai.

Spark pašlaik atbalsta autentifikāciju, izmantojot kopīgu noslēpumu. Spark var integrēt ar HDFS, un tā var izmantot HDFS ACL un faila līmeņa atļaujas. Spark var darboties arī ar YARN, izmantojot Kerberos iespējas.

Lietošanas gadījumi, kad Hadoop vislabāk der:

  • Analizējot arhīva datus. Dzija ļauj paralēli apstrādāt milzīgu datu daudzumu. Datu daļas tiek apstrādātas paralēli un atsevišķi dažādos DataNodes un apkopo katra NodeManager rezultātus.
  • Ja tūlītēji rezultāti nav nepieciešami. Hadoop MapReduce ir labs un ekonomisks risinājums sērijveida apstrādei.

Lietošanas gadījumi, kad Spark vislabāk der:

Reālā laika lielo datu analīze:

Datu reāllaika analīze nozīmē reāllaika notikumu plūsmu ģenerēto datu apstrādi ar miljoniem notikumu sekundē, piemēram, Twitter datus. Spark spēks ir tā spējās atbalstīt datu straumēšanu kopā ar sadalītu apstrādi. Šī ir noderīga kombinācija, kas nodrošina gandrīz reāllaika datu apstrādi. MapReduce ir ierobežota ar šādu priekšrocību, jo tā tika izstrādāta, lai veiktu sērijveida sadalītu apstrādi ar lielu datu daudzumu. Reāllaika datus joprojām var apstrādāt MapReduce, taču to ātrums ne tuvu nav Spark ātrumam.

Spark apgalvo, ka datus apstrādā 100x ātrāk nekā MapReduce, bet 10x ātrāk ar diskiem.

Diagrammu apstrāde:

Lielākā daļa grafu apstrādes algoritmu, piemēram, lapas rangs, veic vairākus atkārtojumus ar vieniem un tiem pašiem datiem, un tam nepieciešams ziņu nodošanas mehānisms. Mums ir nepārprotami jāprogrammē MapReduce, lai apstrādātu šādas vairākas iterācijas ar vieniem un tiem pašiem datiem. Aptuveni tas darbojas šādi: nolasiet datus no diska un pēc konkrētas iterācijas ierakstiet rezultātus HDFS un pēc tam lasiet datus no HDFS nākamajai atkārtošanai. Tas ir ļoti neefektīvi, jo tas ietver datu lasīšanu un ierakstīšanu diskā, kas ietver smagas I / O operācijas un datu replikāciju visā klasterī, lai nodrošinātu kļūdu toleranci. Katrai MapReduce atkārtojumam ir ļoti augsts latentums, un nākamo atkārtojumu var sākt tikai pēc tam, kad iepriekšējais darbs ir pilnībā pabeigts.

Arī ziņu nodošanai ir nepieciešami kaimiņu mezglu rādītāji, lai novērtētu konkrētā mezgla rezultātu. Šiem aprēķiniem nepieciešami ziņojumi no kaimiņiem (vai dati par vairākiem darba posmiem), mehānisms, kura trūkst MapReduce. Lai apmierinātu nepieciešamību pēc efektīvas platformas grafu apstrādes algoritmiem, tika izstrādāti dažādi grafu apstrādes rīki, piemēram, Pregel un GraphLab. Šie rīki ir ātri un mērogojami, taču nav efektīvi šo sarežģīto daudzpakāpju algoritmu izveidošanai un pēcapstrādei.

Apache Spark ieviešana lielā mērā atrisināja šīs problēmas. Spark satur grafu skaitļošanas bibliotēku ar nosaukumu GraphX, kas vienkāršo mūsu dzīvi. Skaitīšana atmiņā kopā ar iebūvētu grafu atbalstu uzlabo algoritma veiktspēju par vienu vai diviem grādiem, salīdzinot ar tradicionālajām MapReduce programmām. Spark izmanto Netty un Akka kombināciju, lai izplatītu ziņojumus izpildītājiem. Apskatīsim statistiku, kas attēlo PageRank algoritma veiktspēju, izmantojot Hadoop un Spark.

Iteratīvie mašīnmācīšanās algoritmi:

Gandrīz visi mašīnmācīšanās algoritmi darbojas iteratīvi. Kā mēs redzējām iepriekš, iteratīvie algoritmi MapReduce ieviešanā ietver I / O vājās vietas. MapReduce izmanto rupji sadalītus uzdevumus (uzdevuma līmeņa paralēlisms), kas ir pārāk smagi iteratīviem algoritmiem. Dzirkstele ar Mesos palīdzību - sadalītās sistēmas kodols, pēc katras iterācijas kešatmiņā saglabā starpposma datu kopu un šajā kešatmiņā saglabātajā datu kopā palaiž vairākas iterācijas, kas samazina I / O un palīdz ātrāk palaist algoritmu defektos.

Spark ir iebūvēta mērogojama mašīnmācīšanās bibliotēka ar nosaukumu MLlib, kas satur augstas kvalitātes algoritmus, kas izmanto iterācijas un dod labākus rezultātus nekā MapReduce dažreiz izmantotie vienas caurlaides tuvinājumi.

  • Ātra datu apstrāde. Kā mēs zinām, Spark ļauj apstrādāt atmiņā. Tā rezultātā Spark ir līdz pat 100 reizēm ātrāks par datiem RAM un līdz 10 reizēm par datiem, kas atrodas krātuvē.
  • Iteratīva apstrāde. Spark RDD ļauj veikt vairākas kartes darbības atmiņā, bez nepieciešamības rakstīt starpdatu kopas diskā.
  • Tuvu reāllaika apstrāde. Spark ir lielisks līdzeklis, lai sniegtu tūlītēju biznesa ieskatu. Tas ir iemesls, kāpēc Spark tiek izmantota kredītkaršu straumēšanas sistēmā.

'Apache Spark: Apache Hadoop slepkava vai glābējs?'

Atbilde uz to - Hadoop MapReduce un Apache Spark savā starpā nekonkurē. Patiesībā tie diezgan labi papildina viens otru. Hadoop izejvielu sistēmās kontrolē milzīgas datu kopas. Spark nodrošina reāllaika atmiņā apstrādi tām datu kopām, kurām tas nepieciešams. Ja mēs apvienojam Apache Spark spējas, t.i., lielu apstrādes ātrumu, iepriekšēju analīzi un daudzkārtēju integrācijas atbalstu ar Hadoop zemo izmaksu darbību ar aparatūru, tas dod vislabākos rezultātus. Hadoops izsaka komplimentus Apache Spark iespējām. Spark nevar pilnībā aizstāt Hadoop, bet labā ziņa ir tā, ka pieprasījums pēc Spark pašlaik ir visu laiku augstākais! Šis ir īstais laiks, lai apgūtu Spark un maksimāli izmantotu savas karjeras iespējas. Sāc tagad!

kādi ir konteksta filtri tabulā

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies ātrāk.

Ja vēlaties iemācīties Spark un veidot karjeru Spark domēnā, lai veiktu liela mēroga datu apstrādi, izmantojot RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​un Scala ar Real Life lietošanas gadījumiem, apskatiet mūsu interaktīvo tiešsaistes tiešraidi šeit, kas nāk ar 24 * 7 atbalstu, kas palīdzēs jums visu mācību laiku.