„Spark vs Hadoop“ sistemos: pagrindiniai skirtumai

„Apache Spark vs Hadoop MapReduce“

Kartais interneto kūrėjų darbas neįmanomas be daugybės skirtingų programų - platformų, operacinių sistemų ir schemų. Milijonai patyrusių programuotojų iš viso pasaulio turi unikalius programavimo įgūdžius, tačiau nerealu juos tobulinti be specialių platformų, vadinamų karkasais. Tai primena saugojimą debesyje ir yra sukurta svetainei, programai ar koncepciniam modeliui kurti. Galite pabandyti parašyti programos kodą be papildomų šablonų, tačiau tai užims per daug laiko ir pastangų. Šiame straipsnyje apžvelgsime pagrindinius dviejų populiarių schemų pranašumus ir trūkumus ir nustatysime geriausius asmeniškai jums. Taigi „Spark vs Map Reduce“ - kas yra geriau?

Kas yra „Apache Spark“ - pagrindinės sąvokos

Pirmasis šio didelio masto projekto „Hadoop“ startas įvyko 2014 m. Gegužės 30 d. Platformos kūrėjai siekė sukurti kuo patogesnes programavimo sąsajas „Java“, „Scala“, „Python“, R. kalboms. Pagrindų kodas buvo parašytas „Scala“, o šiek tiek vėliau dalis elemento buvo integruota į „Java“. Taigi platformos vartotojai turi galimybę tiesiogiai dirbti „Java“. Jį sudaro branduolys ir keli plėtiniai, tokie kaip „Spark SQL“ (leidžia atlikti SQL užklausas dėl duomenų), „Spark Streaming“ (priedas srautinių duomenų apdorojimui), „Spark MLlib“ (mašininio mokymosi bibliotekų rinkinys), „GraphX“. (skirtas paskirstytam grafiko apdorojimui). Pakankamai patogu naudoti „Apache Spark“ šiuo metu dirba su 2018 m. Spalio 26 d. Atnaujinimu.

„Apache Spark“ architektūros schema - ar viskas išradinga, paprasta?

„Spark“ naudojama per įprastą darbalaukį ir architektūrą. Nuoroda yra klasteris, kurį tvarko administratorius stebėdamas atliktas užduotis. Sistema, leidžianti sutaupyti daug laiko daug kuriant, yra paprasta. Jo vairuotojas ir kiekvienas atlikėjas užduotis gauna savo „Java“. Galite naudoti jį vertikalioje arba horizontalioje klasteryje, o „Apache Spark“ viduje yra mišri konfigūracija. Verta manyti, kad viena iš produkto populiarumo priežasčių yra jo galimybė kurti keliomis kalbomis. API sistema vienodai patogi visoms kalboms, tačiau paklausiausia yra „Java“.

„Apache Spark“ ir jos naudojimo atvejai

„Spark“ yra „Apache“ projektas, kurio tikslas yra pagreitinti klasterių skaičiavimą, kuris nepakankamai greitai veikia panašiose sistemose. Projektą plėtoja klestinti laisva bendruomenė, šiuo metu pati aktyviausia iš „Apache“ projektų. „Spark“ apima patobulintą ir pagreitintą duomenų apdorojimą, todėl jis pelnė didelį populiarumą tarp profesionalų iš viso pasaulio. Palyginti su „Hadoop“, „Spark“ pagreitina programų darbą daugiau nei 100 kartų, o diske - daugiau nei 10 kartų. Tyrinėjant „Apache Spark“, verta atkreipti dėmesį į dar vieną svarbų aspektą: jame pateiktas paruoštas interaktyvus apvalkalas (REPL). Naudodamiesi REPL, galite išbandyti kiekvienos kodo eilutės vykdymo rezultatą, iš anksto neprogramuodami ir atlikdami visą užduotį. Taigi jau paruoštą kodą galima parašyti žymiai greičiau, be to, pateikiama duomenų situacijų analizė.

„Apache“ kibirkštinio kodo pavyzdžiai

„Spark“ yra sistema, leidžianti padidinti kūrėjo produktyvumą ir pagerinti jo gaminio greitį bei funkcionalumą. Projekto universalumas prisitaiko prie daugelio programavimo kalbų, sujungdamas daugelį procesų į vieną sistemą. Žinoma, „Spark“ turi savo trūkumų: pirmiausia, ji neturi idealaus API. Pvz., Pasenęs RDD suteikia daugiau vietos kūrėjo klaidai, ypač jei jis veikia ne su „Java Beans“, o „Row“. Ką reikia žinoti apie „Spark vs Mapreduce“? Kuo didesnis duomenų kiekis, tuo sudėtingesnis iš pirmo žvilgsnio gali atrodyti šis produktas. Nepaisant to, kodo rašymo procesas yra gana skaidrus. Pažvelkime į kelis duomenų įvedimo prototipus dirbdami su „Spark“:

val linijos: RDD [eilutė] = rdd.map (someFunction)

arba

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

geriau nei

val line = rdd.map (someFunction)

ir, galiausiai

def f (x: stygos) = ???

„Apache Spark“ pagrindinės kalbos

Populiari sistema palaiko 3 programavimo kalbas - „Scala“, „Java“ ir „Python“. Tikriausiai patogiausia dirbti su paskutiniu - gana patogu dirbti tiesiogiai „Python Notebook“. Taigi dalis duomenų, gautų iš klasterio, yra perduodami naudojant „Pandos“ paketą, nereikia daug laiko skirti iš interneto programuotojo. „Apache“ sistema pelnė daugelio kūrėjų pripažinimą būtent dėl ​​jos universalumo. Nepaisant užduoties sudėtingumo, specialistas gali naudoti didžiulį rėmo funkcionalumą ir pašalinti bet kokias elemento kodo klaidas.

„Apache Spark“ pasirodymas

Veikimo metu „Spark“ gali naudoti maksimalią klasterio galią, taip pat RAM, diską ir net procesorių. Ši sistema reikalauja, kad vartotojo kompiuteris veiktų gerai, todėl prieš pradėdami dirbti su ja, mes rekomenduojame įsigyti kompiuterį su bent dviem procesoriaus branduoliais. Kibirkštis turi būti optimizuota - todėl jos komponentai tampa našesni. Aukštos kokybės darbui sistemoje rekomenduojama naudoti volframą - vykdymo metu naudokite įmontuotą „Spark SQL“ komponentą, kuris padidina baitinį našumą. Naudokite duomenų rinkinių struktūras, o ne „DataFrames“. Duomenų rinkinio API su „Scala“ (vietoj RDD).

„Apache Spark“ pranašumai

Pagrindinė šio produkto kokybė yra jo naudojimo paprastumas ir gana didelis API funkcijų skaičius. Daugelis kūrėjų atpažįsta „Spark“ kaip patobulinimo įrankį nei klasikinis žemėlapio mažinimo įrankis ir dar patogesnius įrankius, tokius kaip „Apache Crunch“ ir kiti. Verta paminėti, kad maksimalus paprastumas dirbant tarp šios programinės įrangos ir „Python“ su „Panda“. Panašu, kad „Apache“ tyčia sukūrė sistemą paminėtoms programoms palaikyti. Čia taip pat šauni yra „API DataSet“. Po tam tikros praktikos visiškai įmanoma naudotis jos funkcijomis taip, kaip SQL, papildyti ją savo UDF failais ir pasiekti didesnį lankstumą. Pačius UDF rašyti yra lengviau nei „Hive“, o kai kurie sunkumai kyla tik grįžus iš jų sudėtingas duomenų struktūras, o tada „Java“ ir veikiau todėl, kad „Scala“ tikimasi struktūrų.

Kas yra „MapReduce“?

Žemėlapio sumažinimas yra algoritmas, skirtas lygiagrečiam didelio kiekio duomenų apdorojimui, pavyzdžiui, tikrinimo programų ar žiniatinklio užklausų žurnalų rezultatams. Programa išgarsėjo tarp interneto svetainių kūrėjų dėl galimo sudėtingų užduočių atlikimo. Tipiškas šio algoritmo įgyvendinimas turi 3 elementus kaip įvestį: originalų rinkinį, žemėlapio funkciją, funkciją Sumažinti ir po apdorojimo grąžina naują duomenų rinkinį. Algoritmą sudaro keli žingsniai. Pirmiausia kiekvienam originalios kolekcijos elementui vykdoma žemėlapio funkcija. Žemėlapyje grąžinamas nulis arba sukuriami rakto ar vertės objektai. Sužinokime daugiau apie „Mapreduce vs Spark“.

„Hadoop Map Reduce“: pagrindiniai pranašumai

Pagrindinis sistemos pranašumas yra HDFS. Tai yra failų sistema, leidžianti saugoti kūrėjo produkto duomenis ne failų lentelėje (kuri užima gana daug kompiuterio vietos). „Map Reduce“ siūlo vartotojo duomenų saugojimą specialiame vardų serveryje, pavadinimu „NameNode“. Tokiu atveju patys duomenys yra deponuojami duomenų serveryje - „DataNode“. Taip pat verta paminėti, kad sistemoje naudojami duomenys yra padalijami į 64 ir 128 megabaitų blokus, o serveris saugo jų atsargines kopijas. Galite pastebėti, kad „Apache Spark vs Mapreduce“ neturi išskirtinių savybių, tačiau taip nėra.

Saugumas yra pagrindinis pranašumas naudojant „Map Reduce“. Remiantis statistika, galimo duomenų praradimo dėl programinės įrangos pakartotinio įdiegimo atveju „Map Reduce“ sutaupys iki 99% visų failų. Klasikinę „Hadoop“ klasterio konfigūraciją sudaro vienas vardų serveris, vienas „Hadoop MapReduce“ vedlys (pvz., „JobTracker“) ir darbo mašinų rinkinys, iš kurių kiekvienas vienu metu valdo duomenų serverį („DataNode“) ir darbuotoją („TaskTracker“). Kiekvienas „MapReduce“ darbas susideda iš dviejų etapų:

  • Žemėlapis - vykdomas lygiagrečiai ir (jei įmanoma) lokaliai kiekviename duomenų bloke. Užuot pateikę terabaitus duomenų į programą, nedidelė vartotojo apibrėžta programa nukopijuojama į duomenų serverius ir su jomis daroma viskas, kuriai nereikia maišyti ir perkelti duomenis (maišyti);
  • Sumažinti - žemėlapis papildomas visomis operacijomis.

Žemėlapis Sumažinkite sistemos pavyzdžius

„MapReduce“ yra struktūra, sukurta efektyviai apdoroti didelius duomenų kiekius. Pvz., Jei duomenų rinkinyje yra 1 milijonas kontaktų ir jis yra saugomas santykiniame vaizde, yra labai brangu gauti reikšmes ir atlikti bet kokias jų transformacijas.

Pvz., Naudodamiesi SQL ir atsižvelgdami į gimimo datą, sužinokite, kiek> 30 metų žmonių milijonui įrašų užtruks šiek tiek laiko, ir tai padidės tik eilės tvarka, nes užklausos sudėtingumas padidės. Žemėlapio sumažinimas suteikia grupių įgyvendinimą, kai duomenys apdorojami paskirstytu būdu.

„MapReduce“ architektūra

HDFS yra panašus į kitas tradicines failų sistemas: failai saugomi kaip blokai, egzistuoja atvaizdavimas tarp blokų ir failų pavadinimų, palaikoma medžio struktūra, palaikomas teisių pagrįstas prieigos modelis ir kt.

Keletas HDFS skirtumų nuo „Apache Spark“:

  • Skirta laikyti daugybę didžiulių (> 10 GB) failų. Viena išvada - didelis bloko dydis, palyginti su kitomis failų sistemomis (> 64 MB)
  • Optimizuotas palaikyti prieigą prie duomenų srautinio perdavimo (didelio srauto skaitymas), atsitiktinių duomenų skaitymo operacijų atlikimas pradeda kliudyti.
  • Dėmesys skiriamas daugybės nebrangių serverių naudojimui. Visų pirma serveriai naudoja JBOB struktūrą (Tiesiog krūva disko), o ne RAID - atspindėjimas ir replikacija atliekama klasterio, o ne atskiro kompiuterio lygiu.
  • Daugelis tradicinių paskirstytų sistemų problemų yra įtrauktos į dizainą - pagal nutylėjimą visas atskirų mazgų gedimas yra visiškai normalus ir natūralus veikimas, o ne kažkas neįprasto.

Kitaip tariant, sunku pastebėti didžiulius šios sistemos skirtumus nuo aukščiau pateikto pavyzdžio. „MapReduce“ schema turi savo išskirtines savybes - tiesiog palyginkite jas su savo platforma. Susidūrus su „Hadoop vs Apache Spark“, specialistui rekomenduojama įrankį pasirinkti savarankiškai, atsižvelgiant į jo užduočių spektrą.

„MapReduce“ pasirodymai

Kuriant sistemą buvo atsižvelgiama į siaurai orientuotus specialistus, daugiausia dirbančius su „Java“. Kūrėjų įmonė nustatė keletą sričių, kurias „Map Reduce“ gavo ir nuolat atnaujina:

  • Saugumas - duomenų vagysčių prevencija ir prieigos kontrolė;
  • Pagalba - dokumentacija ir konsultacijos;
  • Analizė - būtiniausias analizės funkcijų rinkinys, kurio reikia įmonei;
  • Integracija - integracija su senaisiais produktais ir trečiųjų šalių produktais duomenų perdavimo ar mainų tikslais.

Naudodami šias kategorijas kaip palyginimo pagrindą, straipsnio autoriai pagrindžia komercinių „Hadoop“ produktų, skirtų didelių duomenų analizei, pvz., „InfoSphere BigInsights“, pristatymą, o ne paprastas atvirojo kodo diegimas, jei kalbame apie „Spark vs Hadoop“.

„Hadoop“ žemėlapis „Sumažink prieš kibirkštį“. Ką reikia pasirinkti?

Pažvelkime į pagrindines tezes iš visos tekstinės medžiagos ir padėkime skaitytojui pasirinkti tinkamą darbo platformą.

Jie išsprendžia skirtingas problemas. „Hadoop“ ir „Apache Spark“ yra „Big Data“ apdorojimo sistemos, tačiau skirtos įvairiems tikslams. Tiesą sakant, „Hadoop“ sudaro paskirstytų duomenų infrastruktūrą: dideli duomenų rinkiniai yra paskirstomi tarp daugybės mazgų, sudarančių standartinių serverių grupę. Tai reiškia, kad jums nereikia pirkti ir prižiūrėti brangios specializuotos įrangos. „Hadoop“ indeksuoja ir seka duomenų būseną, todėl jų apdorojimas ir analizė yra efektyvesni nei anksčiau. „Spark“ yra duomenų apdorojimo įrankis. Tai leidžia atlikti įvairias operacijas su paskirstytais duomenų rinkiniais, tačiau nepateikia jų paskirstytos saugyklos.

„Spark vs Mapreduce“ abu pasirodymai

Bet kurią iš šių dviejų technologijų galima naudoti atskirai, nenurodant kitos. „Hadoop“ apima ne tik „Hadoop“ paskirstytos failų sistemos saugojimo komponentą, bet ir „MapReduce“ apdorojimo komponentą, todėl apdoroti galima be „Spark“. Panašiai „Spark“ galima naudoti ir be „Hadoop“, tačiau yra keletas skirtumų. „Spark“ neturi savo failų valdymo sistemos, todėl reikalinga integracija, jei ne su HDFS, tada su kita debesies saugojimo platforma. Tačiau „Spark“, tiek daug žmonių mano, kad geriau juos naudoti kartu, jei kalbame apie „Hadoop vs Spark“.

Kibirkštis yra greitesnė. Apskritai, „Spark“ efektyvumas gerokai lenkia „MapReduce“, nes duomenys čia vertinami skirtingai. Jei „MapReduce“ apdoroja žingsnis po žingsnio, tada „Spark“ veikia visu duomenų rinkiniu kaip vienas subjektas.

„MapReduce“ veikia taip: duomenys yra skaitomi iš klasterio, atliekama reikalinga operacija, klasteriui rašomi rezultatai, atnaujinami duomenys klasteriui, vykdoma kita operacija, jo rezultatai rašomi klasteriui, ir tt “, - aiškina pagrindinis„ Booz Allen Hamilton “analitikas Kirkas Bourne'as.„ Priešingai, „Spark“ visas analitines operacijas atmintyje atlieka beveik realiuoju laiku: duomenys nuskaitomi iš klasterio, atliekamos reikalingos operacijos, tada rezultatai rašomi klasteris, po kurio procesas yra baigtas. Apdorodamas paketą, „Spark“ dešimt kartų padidina „MapReduce“, o analizuodamas atmintyje - šimtu.

Kitos „Spark vs Mapreduce“ savybės

Kibirkšties greitis gali būti per didelis. „MapReduce“ veikimo, kaip taisyklė, visiškai pakanka, jei dirbate su statiniais duomenimis ir galite laukti, kol bus baigtas visos paketo apdorojimas. Bet jei jums reikia analizuoti srautinius duomenis iš jutiklių, esančių gamybos patalpose, ar programas, kurioms reikia kelių operacijų, greičiausiai norėsite kreiptis į „Spark“ tarp „Hadoop“ ir „Apache Spark“. Pavyzdžiui, daugumai mašininio mokymosi algoritmų reikia kelių operacijų. Įprastos užduotys, išspręstos naudojant „Spark Apache“, apima realiojo laiko rinkodaros kampanijas, greitą produktų rekomendacijų išleidimą, kibernetinio saugumo analizę ir mašinų žurnalų stebėjimą.

„Hadoop vs Spark“ - pabaigoje

Nelaimių padariniai yra gerai įgyvendinti abiejose technologijose, nors jos yra naudojamos skirtingai. „Hadoop“ yra atspari sistemos gedimams, nes atlikę kiekvieną operaciją, duomenys įrašomi į diską, o naudojant „Spark“ - duomenys atkuriami dėl to, kad duomenų objektai yra saugomi rinkiniuose, paskirstytuose klasteryje. „Duomenų objektus galima laikyti atmintyje arba diske, o RDD („ Resilient Distributed Dataset “) koncepcija suteikia visišką atstatymą, jei įvyktų kokių nors gedimų ar klaidų“, - teigė gimęs.