Spark vs Hadoop: Hvilket er det beste Big Data Framework?



Dette blogginnlegget snakker om apache gnist vs hadoop. Det vil gi deg en ide om hvilket som er riktig Big Data-rammeverk å velge i forskjellige scenarier.

Jeg vil starte denne Apache Spark vs Hadoop-bloggen ved først å introdusere Hadoop og Spark for å sette riktig kontekst for begge rammene. Deretter vil vi sammenligne begge Big Data-rammene på forskjellige parametere for å analysere deres styrker og svakheter.Men uansett resultatet av sammenligningen vår blir, bør du vite at både Spark og Hadoop er viktige komponenter i .

Apache Spark vs Hadoop: Introduksjon til Hadoop

Hadoop er et rammeverk som lar deg først lagre Big Data i et distribuert miljø slik at du kan behandle det parallelt. Det er i utgangspunktet to komponenter i Hadoop:





HDFS

HDFS skaper en abstraksjon av ressurser, la meg forenkle det for deg. I likhet med virtualisering kan du se HDFS logisk som en enkelt enhet for lagring av store data, men faktisk lagrer du dataene dine over flere noder på en distribuert måte. Her har du master-slave-arkitektur. I HDFS er Namenode en hovednode og Datanoder er slaver.

NameNode

Det er masterdemonen som vedlikeholder og administrerer DataNodes (slave noder). Den registrerer metadataene til alle filene som er lagret i klyngen, f.eks. plassering av blokkerte lagre, størrelsen på filene, tillatelser, hierarki, etc. Den registrerer hver eneste endring som skjer i filsystemets metadata.



For eksempel, hvis en fil blir slettet i HDFS, vil NameNode umiddelbart registrere dette i EditLog. Den mottar jevnlig en hjerterytme og en blokkeringsrapport fra alle DataNodene i klyngen for å sikre at DataNodene er live. Den holder oversikt over alle blokkene i HDFS og i hvilke noder disse blokkene er lagret.

hvordan du bruker sqlite-nettleseren

DataNode

Dette er slave-demoner som kjører på hver slave-maskin. De faktiske dataene lagres på DataNodes. De er ansvarlige for å servere lese- og skriveforespørsler fra klientene. De er også ansvarlige for å opprette blokker, slette blokker og replikere det samme basert på beslutningene tatt av NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaGARN

YARN utfører alle behandlingsaktivitetene dine ved å tildele ressurser og planlegge oppgaver. Den har to store demoner, dvs. ResourceManager og NodeManager .



ResourceManager

Det er en klyngenivå (en for hver klynge) komponent og kjører på hovedmaskinen. Den administrerer ressurser og planlegger applikasjoner som kjører på toppen av GARN.

NodeManager

Det er en komponent på nodenivå (en på hver node) og kjører på hver slave-maskin. Det er ansvarlig for å administrere containere og overvåke ressursutnyttelsen i hver container. Det holder også oversikt over nodehelse og loggstyring. Den kommuniserer kontinuerlig med ResourceManager for å holde seg oppdatert. Så du kan utføre parallell behandling på HDFS ved hjelp av MapReduce.

For å lære mer om Hadoop, kan du gå gjennom dette blogg. Nå som vi alle er innredet med Hadoop-introduksjon, la oss gå videre til Spark introduksjon.

Apache Spark vs Hadoop: Introduksjon til Apache Spark

Apache Spark er et rammeverk for sanntids dataanalyse i et distribuert databehandlingsmiljø. Den utfører beregninger i minnet for å øke hastigheten på databehandling. Det er raskere for behandling av storskala data da det utnytter beregninger i minnet og andre optimaliseringer. Derfor krever det høy prosessorkraft.

Resilient Distributed Dataset (RDD) er en grunnleggende datastruktur for Spark. Det er en uforanderlig distribuert samling av gjenstander. Hvert datasett i RDD er delt inn i logiske partisjoner, som kan beregnes på forskjellige noder i klyngen. RDD-er kan inneholde alle typer Python-, Java- eller Scala-objekter, inkludert brukerdefinerte klasser. Gnistkomponenter gjør det raskt og pålitelig. Apache Spark har følgende komponenter:

  1. Gnistkjerne - Spark Core er basismotoren for storskala parallell og distribuert databehandling. Videre tillater tilleggsbiblioteker som er bygget oppå kjernen forskjellige arbeidsmengder for streaming, SQL og maskinlæring. Det er ansvarlig for minnestyring og feilgjenoppretting, planlegging, distribusjon og overvåking av jobber i en klynge og samhandling med lagringssystemer
  2. Spark Streaming - Spark Streaming er komponenten i Spark som brukes til å behandle strømmedata i sanntid. Dermed er det et nyttig tillegg til kjernen Spark API. Det muliggjør høy gjennomstrømning og feiltolerant strømbehandling av live datastrømmer
  3. Gnist SQL : Spark SQL er en ny modul i Spark som integrerer relasjonsbehandling med Sparks funksjonelle programmerings-API. Den støtter spørring av data enten via SQL eller via Hive Query Language. For de av dere som er kjent med RDBMS, vil Spark SQL være en enkel overgang fra dine tidligere verktøy der du kan utvide grensene for tradisjonell relasjonell databehandling.
  4. GraphX : GraphX ​​er Spark API for grafer og graf-parallell beregning. Dermed utvider den Spark RDD med en elastisk distribuert eiendomsgraf. På et høyt nivå utvider GraphX ​​Spark RDD-abstraksjonen ved å introdusere Resilient Distributed Property Graph: en rettet multigrafi med egenskaper festet til hvert toppunkt og kant.
  5. MLlib (Machine Learning): MLlib står for Machine Learning Library. Spark MLlib brukes til å utføre maskinlæring i Apache Spark.

Som du kan se, kommer Spark fullpakket med biblioteker på høyt nivå, inkludert støtte for R, SQL, Python, Scala, Java etc. Disse standardbibliotekene øker de sømløse integreringene i kompleks arbeidsflyt. Over dette tillater det også ulike sett med tjenester å integrere med det som MLlib, GraphX, SQL + Data Frames, Streaming services etc. for å øke evnene.

For å lære mer om Apache Spark, kan du gå gjennom dette blogg. Nå er bakken klar for Apache Spark vs Hadoop. La oss gå videre og sammenligne Apache Spark med Hadoop på forskjellige parametere for å forstå deres styrker.

Apache Spark vs Hadoop: Parametere å sammenligne

Opptreden

Gnist er rask fordi den har minnebehandling. Den kan også bruke disk for data som ikke alle passer inn i minnet. Sparks minnebehandling gir nær sanntidsanalyser. Dette gjør Spark egnet for kredittkortbehandlingssystem, maskinlæring, sikkerhetsanalyse og Internet of Things-sensorer.

Hadoop ble opprinnelig konfigurert for kontinuerlig å samle inn data fra flere kilder uten å bekymre seg for typen data og lagre dem i distribuert miljø. MapReduce bruker batchbehandling. MapReduce ble aldri bygget for sanntidsbehandling, hovedideen bak YARN er parallell behandling over distribuert datasett.

Problemet med å sammenligne de to er at de utfører behandling forskjellig.

Brukervennlighet

Spark leveres med brukervennlige API-er for Scala, Java, Python og Spark SQL. Spark SQL er veldig lik SQL, så det blir lettere for SQL-utviklere å lære det. Spark gir også et interaktivt skall for utviklere å spørre og utføre andre handlinger, og få umiddelbar tilbakemelding.

Du kan innta data i Hadoop enkelt, enten ved å bruke skall eller integrere dem med flere verktøy som Sqoop, Flume etc. YARN er bare et behandlingsrammeverk, og det kan integreres med flere verktøy som Hive og Pig. HIVE er en datalagringskomponent som utfører lesing, skriving og administrering av store datasett i et distribuert miljø ved hjelp av SQL-lignende grensesnitt. Du kan gå gjennom dette Hadoop økosystem blogg for å vite om de forskjellige verktøyene som kan integreres med Hadoop.

Kostnader

Hadoop og Spark er begge Apache open source-prosjekter, så det koster ikke programvaren. Kostnad er bare knyttet til infrastrukturen. Begge produktene er utformet på en slik måte at den kan kjøre på råvaremaskinvare med lav TCO.

Nå lurer du kanskje på hvordan de er forskjellige. Lagring og behandling i Hadoop er diskbasert og Hadoop bruker standardmengder minne. Så med Hadoop trenger vi mye diskplass i tillegg til raskere disker. Hadoop krever også flere systemer for å distribuere disk I / O.

På grunn av Apache Sparks i minneprosessering krever det mye minne, men det kan håndtere en standard hastighet og mengde disk. Siden diskplass er en relativt billig vare, og siden Spark ikke bruker disk I / O for behandling, krever det i stedet store mengder RAM for å utføre alt i minnet. Dermed medfører Spark-systemet mer kostnader.

Men ja, en viktig ting å huske på er at Sparks teknologi reduserer antallet nødvendige systemer. Det trenger betydelig færre systemer som koster mer. Så det vil være et punkt der Spark reduserer kostnadene per beregningsenhet selv med det ekstra RAM-kravet.

Databehandling

Det er to typer databehandling: Batch Processing & Stream Processing.

Batchbehandling vs Stream Processing

Batchbehandling : Batchbehandling har vært avgjørende for big data-verdenen. På den enkleste måten fungerer batchbehandling med høye datamengder samlet over en periode. I batchbehandlingen blir data først samlet inn, og deretter produseres behandlede resultater på et senere tidspunkt.

Batchbehandling er en effektiv måte å behandle store, statiske datasett på. Generelt utfører vi batchbehandling for arkiverte datasett. For eksempel beregning av gjennomsnittsinntekt i et land eller evaluering av endringen i e-handel det siste tiåret.

Strømbehandling : Strømbehandling er den nåværende trenden i stordataverdenen. Time of hour er hastighet og sanntidsinformasjon, og det er det dampbehandling gjør. Partiprosessering tillater ikke bedrifter å reagere raskt på endrede forretningsbehov i sanntid, strømbehandling har sett en rask vekst i etterspørselen.

Nå som vi kommer tilbake til Apache Spark vs Hadoop, er YARN i utgangspunktet et rammeverk for batchbehandling. Når vi sender en jobb til GARN, leser den data fra klyngen, utfører operasjon og skriver resultatene tilbake til klyngen. Deretter leser den oppdaterte data igjen, utfører neste operasjon og skriver resultatene tilbake til klyngen og så videre.

Spark utfører lignende operasjoner, men den bruker behandling i minnet og optimaliserer trinnene. GraphX ​​lar brukerne se de samme dataene som grafer og som samlinger. Brukere kan også transformere og bli med i grafer med Resilient Distributed Datasets (RDDs).

Feiltoleranse

Hadoop og Spark gir begge feiltoleranse, men begge har ulik tilnærming. For både HDFS og GARN sjekker masterdemoner (dvs. henholdsvis NameNode & ResourceManager) hjerterytmen til slave-demoner (dvs. henholdsvis DataNode & NodeManager). Hvis noen slave-demon feiler, planlegger master-demonene alle ventende og pågående operasjoner til en annen slave. Denne metoden er effektiv, men den kan også øke fullføringstidene for operasjoner med enkelt svikt betydelig. Ettersom Hadoop bruker råvaremaskinvare, er en annen måte som HDFS sikrer feiltoleranse ved å replikere data.

hvordan du installerer formørkelsesvinduer

Som vi diskuterte ovenfor, er RDD byggesteiner for Apache Spark. RDDs gir feiltoleranse til Spark. De kan referere til ethvert datasett som finnes i eksternt lagringssystem som HDFS, HBase, delt filsystem. De kan opereres parallelt.

hva er en keyerror i python

RDD-er kan vedvare et datasett i minnet på tvers av operasjoner, noe som gjør fremtidige handlinger 10 ganger mye raskere. Hvis en RDD går tapt, vil den automatisk beregnes på nytt ved å bruke de originale transformasjonene. Slik gir Spark feiltoleranse.

Sikkerhet

Hadoop støtter Kerberos for autentisering, men det er vanskelig å håndtere. Likevel støtter den også tredjepartsleverandører som LDAP (Lightweight Directory Access Protocol) for autentisering. De tilbyr også kryptering. HDFS støtter tradisjonelle filtillatelser, samt tilgangskontrollister (ACL-er). Hadoop gir servicenivåautorisasjon, som garanterer at klienter har de rette tillatelsene for jobbinnsending.

Spark støtter for øyeblikket autentisering via en delt hemmelighet. Spark kan integreres med HDFS, og det kan bruke HDFS ACLer og filnivåtillatelser. Spark kan også kjøres på YARN ved å utnytte funksjonene til Kerberos.

Brukstilfeller der Hadoop passer best:

  • Analyserer arkivdata. GARN tillater parallell behandling av store mengder data. Deler av data behandles parallelt og separat på forskjellige DataNoder og samler resultat fra hver NodeManager.
  • Hvis øyeblikkelige resultater ikke er nødvendige. Hadoop MapReduce er en god og økonomisk løsning for batch-prosessering.

Brukstilfeller der Spark passer best:

Sanntids Big Data-analyse:

Sanntids dataanalyse betyr behandling av data generert av sanntids hendelsesstrømmer som kommer inn med en hastighet på millioner av hendelser per sekund, for eksempel Twitter-data. Styrken til Spark ligger i dets evner til å støtte datastreaming sammen med distribuert behandling. Dette er en nyttig kombinasjon som gir nær sanntidsbehandling av data. MapReduce er funksjonshemmet av en slik fordel, da det ble designet for å utføre batch-distribuert behandling på store datamengder. Sanntidsdata kan fortsatt behandles på MapReduce, men hastigheten er ikke i nærheten av Spark.

Spark hevder å behandle data 100 ganger raskere enn MapReduce, mens 10 ganger raskere med diskene.

Grafbehandling:

De fleste grafbehandlingsalgoritmer som siderangering utfører flere iterasjoner over de samme dataene, og dette krever en mekanisme for overføring av meldinger. Vi må programmere MapReduce eksplisitt for å håndtere slike flere iterasjoner over de samme dataene. Grovt sett fungerer det slik: Les data fra disken, og etter en bestemt iterasjon, skriv resultater til HDFS og les deretter data fra HDFS for neste iterasjon. Dette er veldig ineffektivt siden det innebærer å lese og skrive data til disken som involverer tunge I / O-operasjoner og datareplikering over klyngen for feiltoleranse. Dessuten har hver MapReduce-iterasjon veldig høy ventetid, og neste iterasjon kan bare begynne etter at forrige jobb er fullført.

Videre krever overføring av meldinger score til nabolandene for å evaluere poengsummen til en bestemt node. Disse beregningene trenger meldinger fra naboene (eller data over flere trinn i jobben), en mekanisme som MapReduce mangler. Forskjellige grafbehandlingsverktøy som Pregel og GraphLab ble designet for å imøtekomme behovet for en effektiv plattform for grafbehandlingsalgoritmer. Disse verktøyene er raske og skalerbare, men er ikke effektive for opprettelse og etterbehandling av disse komplekse flertrinnsalgoritmene.

Introduksjon av Apache Spark løste disse problemene i stor grad. Spark inneholder et grafberegningsbibliotek kalt GraphX ​​som forenkler livet vårt. Beregning i minnet sammen med innebygd grafstøtte forbedrer algoritmens ytelse med en eller to grader over tradisjonelle MapReduce-programmer. Spark bruker en kombinasjon av Netty og Akka for å distribuere meldinger over eksekutorene. La oss se på litt statistikk som skildrer ytelsen til PageRank-algoritmen ved hjelp av Hadoop og Spark.

Iterative maskinlæringsalgoritmer:

Nesten alle maskinlæringsalgoritmer fungerer iterativt. Som vi har sett tidligere, involverer iterative algoritmer I / O-flaskehalser i MapReduce-implementeringene. MapReduce bruker grovkornede oppgaver (parallellitet på oppgavennivå) som er for tunge for iterative algoritmer. Gnist ved hjelp av Mesos - en distribuert systemkjerne, cacher det mellomliggende datasettet etter hver iterasjon og kjører flere iterasjoner på dette hurtigbufrede datasettet som reduserer I / O og hjelper med å kjøre algoritmen raskere på en feiltolerant måte.

Spark har et innebygd skalerbart maskinlæringsbibliotek kalt MLlib som inneholder algoritmer av høy kvalitet som utnytter iterasjoner og gir bedre resultater enn en omtrentlig tilnærming som noen ganger brukes på MapReduce.

  • Rask databehandling. Som vi vet tillater Spark behandling i minnet. Som et resultat er Spark opptil 100 ganger raskere for data i RAM og opptil 10 ganger for data som er lagret.
  • Iterativ behandling. Sparks RDD-er tillater å utføre flere kartoperasjoner i minnet, uten behov for å skrive midlertidige datasett til en disk.
  • Nær sanntidsbehandling. Spark er et utmerket verktøy for å gi umiddelbar forretningsinnsikt. Dette er grunnen til at Spark brukes i kredittkortets streaming-system.

“Apache Spark: A Killer or Saviour of Apache Hadoop?”

Svaret på dette - Hadoop MapReduce og Apache Spark konkurrerer ikke med hverandre. Faktisk utfyller de hverandre ganske bra. Hadoop bringer store datasett under kontroll av varesystemer. Spark gir sanntidsbehandling i minnet for de datasettene som krever det. Når vi kombinerer, gir Apache Sparks evne, dvs. høy prosesseringshastighet, forhåndsanalyser og multippel integrasjonsstøtte med Hadoop's lave kostnad på råvare, de beste resultatene. Hadoop komplimenterer Apache Spark-funksjonene. Spark kan ikke erstatte Hadoop helt, men den gode nyheten er at etterspørselen etter Spark for øyeblikket er på et høyeste nivå! Dette er riktig tidspunkt å mestre Spark og få mest mulig ut av karrieremulighetene som kommer din vei. Kom i gang nå!

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet, så kommer vi tilbake til deg tidligst.

Hvis du ønsker å lære Spark og bygge en karriere innen Spark for å utføre storskala databehandling ved hjelp av RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​og Scala med Real Life-brukstilfeller, sjekk ut vår interaktive, live online her, som kommer med 24 * 7 støtte for å veilede deg gjennom hele læringsperioden.