Spark vs Hadoop: Hvilken er den bedste Big Data Framework?

Dette blogindlæg taler om apache gnist vs hadoop. Det giver dig en idé om, hvilken ret Big Data-ramme du kan vælge i forskellige scenarier.

Jeg starter denne Apache Spark vs Hadoop-blog ved først at introducere Hadoop og Spark for at indstille den rigtige kontekst til begge rammerne. Derefter sammenligner vi begge Big Data-rammerne på forskellige parametre for at analysere deres styrker og svagheder.Men uanset hvad resultatet af vores sammenligning bliver, skal du vide, at både Spark og Hadoop er vigtige komponenter i .



Apache Spark vs Hadoop: Introduktion til Hadoop

Hadoop er en ramme, der giver dig mulighed for først at gemme store data i et distribueret miljø, så du kan behandle det parallelt. Der er grundlæggende to komponenter i Hadoop:



HDFS

HDFS skaber en abstraktion af ressourcer, lad mig forenkle det for dig. På samme måde som virtualisering kan du se HDFS logisk som en enkelt enhed til lagring af store data, men faktisk lagrer du dine data på tværs af flere noder distribueret. Her har du master-slave-arkitektur. I HDFS er Namenode en masternode, og datanoder er slaver.

NameNode

Det er master-dæmonen, der vedligeholder og administrerer DataNodes (slave-noder). Den registrerer metadataene for alle de filer, der er gemt i klyngen, f.eks. placering af gemte blokke, størrelsen af ​​filerne, tilladelser, hierarki osv. Den registrerer hver eneste ændring, der finder sted i filsystemets metadata.



For eksempel, hvis en fil slettes i HDFS, registrerer NameNode straks dette i EditLog. Det modtager regelmæssigt et hjerteslag og en blokrapport fra alle DataNodes i klyngen for at sikre, at DataNodes er live. Det registrerer alle blokke i HDFS, og i hvilke noder disse blokke er gemt.

DataNode

Disse er slave-dæmoner, der kører på hver slave-maskine. De faktiske data er gemt på DataNodes. De er ansvarlige for at betjene læse- og skriveanmodninger fra klienterne. De er også ansvarlige for at oprette blokke, slette blokke og replikere de samme baseret på de beslutninger, der er truffet af NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaGARN

YARN udfører alle dine behandlingsaktiviteter ved at tildele ressourcer og planlægningsopgaver. Den har to store dæmoner, dvs. ResourceManager og NodeManager .



ResourceManager

Det er en klyngeniveau (en for hver klynge) komponent og kører på mastermaskinen. Det administrerer ressourcer og planlægger applikationer, der kører oven på YARN.

NodeManager

Det er en nodekomponent (en på hver node) og kører på hver slave-maskine. Det er ansvarligt for at styre containere og overvåge ressourceudnyttelsen i hver container. Det holder også styr på knudesundhed og loghåndtering. Det kommunikerer løbende med ResourceManager for at forblive opdateret. Så du kan udføre parallel behandling på HDFS ved hjælp af MapReduce.

For at lære mere om Hadoop kan du gå igennem dette blog. Nu hvor vi alle er klar med introduktion af Hadoop, lad os gå videre til introduktion til gnist.

Apache Spark vs Hadoop: Introduktion til Apache Spark

Apache Spark er en ramme for realtids dataanalyse i et distribueret computermiljø. Den udfører beregninger i hukommelsen for at øge databehandlingshastigheden. Det er hurtigere til behandling af data i stor skala, da det udnytter beregninger i hukommelsen og andre optimeringer. Derfor kræver det høj processorkraft.

Resilient Distributed Dataset (RDD) er en grundlæggende datastruktur for Spark. Det er en uforanderlig distribueret samling af objekter. Hvert datasæt i RDD er opdelt i logiske partitioner, som kan beregnes på forskellige noder i klyngen. RDD'er kan indeholde alle typer Python-, Java- eller Scala-objekter, herunder brugerdefinerede klasser. Gnistkomponenter gør det hurtigt og pålideligt. Apache Spark har følgende komponenter:

  1. Gnistkerne - Spark Core er basismotoren til storskala parallel og distribueret databehandling. Yderligere tillader yderligere biblioteker, der er bygget oven på kernen, forskellige arbejdsbelastninger til streaming, SQL og maskinindlæring. Det er ansvarligt for hukommelsesstyring og fejlgendannelse, planlægning, distribution og overvågning af job i en klynge og interagerer med lagersystemer
  2. Spark Streaming - Spark Streaming er den komponent i Spark, der bruges til at behandle realtids streaming data. Således er det en nyttig tilføjelse til kernen Spark API. Det muliggør høj gennemstrømning og fejltolerant strømbehandling af live datastrømme
  3. Gnist SQL : Spark SQL er et nyt modul i Spark, der integrerer relationel behandling med Sparks funktionelle programmerings-API. Det understøtter forespørgsel om data enten via SQL eller via Hive Query Language. For de af jer, der er fortrolige med RDBMS, vil Spark SQL være en let overgang fra dine tidligere værktøjer, hvor du kan udvide grænserne for traditionel relationel databehandling.
  4. GraphX : GraphX ​​er Spark API til grafer og graf-parallel beregning. Således udvider den Spark RDD med en elastisk distribueret ejendomsgraf. På et højt niveau udvider GraphX ​​Spark RDD-abstraktionen ved at introducere Resilient Distribueret egenskabsgraf: en rettet multigraf med egenskaber knyttet til hvert toppunkt og kant.
  5. MLlib (Machine Learning): MLlib står for Machine Learning Library. Spark MLlib bruges til at udføre maskinlæring i Apache Spark.

Som du kan se, kommer Spark fyldt med biblioteker på højt niveau, herunder support til R, SQL, Python, Scala, Java osv. Disse standardbiblioteker øger de problemfrie integrationer i en kompleks arbejdsgang. Over dette tillader det også forskellige sæt tjenester at integrere med det som MLlib, GraphX, SQL + Data Frames, Streaming services osv. For at øge dets kapaciteter.

For at lære mere om Apache Spark kan du gå igennem dette blog. Nu er jorden klar til Apache Spark vs Hadoop. Lad os gå videre og sammenligne Apache Spark med Hadoop på forskellige parametre for at forstå deres styrker.

Apache Spark vs Hadoop: Parametre til sammenligning

Ydeevne

Gnist er hurtig, fordi den har behandling i hukommelsen. Det kan også bruge disk til data, der ikke alle passer ind i hukommelsen. Sparks in-memory-behandling leverer næsten realtidsanalyser. Dette gør Spark velegnet til kreditkortbehandlingssystem, maskinindlæring, sikkerhedsanalyse og Internet of Things-sensorer.

Hadoop blev oprindeligt opsat til kontinuerligt at indsamle data fra flere kilder uden at bekymre sig om datatypen og lagre dem på tværs af distribueret miljø. MapReduce bruger batchbehandling. MapReduce blev aldrig bygget til realtidsbehandling, hovedideen bag YARN er parallelbehandling over distribueret datasæt.

Problemet med at sammenligne de to er, at de udfører behandling forskelligt.

Brugervenlighed

Spark leveres med brugervenlige API'er til Scala, Java, Python og Spark SQL. Spark SQL ligner meget SQL, så det bliver lettere for SQL-udviklere at lære det. Spark leverer også en interaktiv skal, som udviklere kan spørge om og udføre andre handlinger og have øjeblikkelig feedback.

Du kan nemt indtage data i Hadoop enten ved at bruge shell eller integrere dem med flere værktøjer som Sqoop, Flume osv. YARN er bare en behandlingsramme, og det kan integreres med flere værktøjer som Hive og Pig. HIVE er en datalagerkomponent, der udfører læsning, skrivning og styring af store datasæt i et distribueret miljø ved hjælp af SQL-lignende interface. Du kan gå igennem dette Hadoop økosystem blog for at vide om de forskellige værktøjer, der kan integreres med Hadoop.

Omkostninger

Hadoop og Spark er begge Apache open source-projekter, så softwaren koster ikke noget. Omkostninger er kun forbundet med infrastrukturen. Begge produkter er designet på en sådan måde, at den kan køre på hardware med lav TCO.

Nu undrer du dig måske over, hvordan de er forskellige. Opbevaring og behandling i Hadoop er diskbaseret, og Hadoop bruger standardmængder af hukommelse. Så med Hadoop har vi brug for meget diskplads samt hurtigere diske. Hadoop kræver også flere systemer til at distribuere disk I / O.

På grund af Apache Sparks i hukommelsesbehandling kræver det meget hukommelse, men det kan håndtere en standardhastighed og mængde disk. Da diskplads er en relativt billig vare, og da Spark ikke bruger disk I / O til behandling, kræver det i stedet store mængder RAM til at udføre alt i hukommelsen. Således påfører Spark-systemet flere omkostninger.

Men ja, en vigtig ting at huske på er, at Sparks teknologi reducerer antallet af krævede systemer. Det har brug for betydeligt færre systemer, der koster mere. Så der vil være et punkt, hvor Spark reducerer omkostningerne pr. Beregningsenhed, selv med det ekstra RAM-krav.

hvordan man passerer værdi i java

Databehandling

Der er to typer databehandling: Batchbehandling & Streaming Processing.

Batchbehandling vs Stream Processing

Batchbehandling : Batchbehandling har været afgørende for big data-verdenen. På den enkleste sigt arbejder batchbehandling med høje datamængder indsamlet over en periode. I batch-behandling indsamles data først, og derefter produceres behandlede resultater på et senere tidspunkt.

Batchbehandling er en effektiv måde at behandle store, statiske datasæt på. Generelt udfører vi batchbehandling for arkiverede datasæt. For eksempel beregning af et lands gennemsnitlige indkomst eller evaluering af ændringen i e-handel i sidste årti.

Stream-behandling : Stream-behandling er den aktuelle tendens i big data-verdenen. Timens behov er hastighed og information i realtid, hvilket er, hvad dampbehandling gør. Batchbehandling tillader ikke virksomheder at reagere hurtigt på skiftende forretningsbehov i realtid, streambehandlingen har set en hurtig vækst i efterspørgslen.

Nu kommer vi tilbage til Apache Spark vs Hadoop, og YARN er grundlæggende en batch-behandlingsramme. Når vi sender et job til GARN, læser det data fra klyngen, udfører operation og skriver resultaterne tilbage til klyngen. Derefter læser den igen de opdaterede data, udfører den næste operation og skriver resultaterne tilbage til klyngen og så videre.

Spark udfører lignende operationer, men det bruger behandling i hukommelsen og optimerer trinene. GraphX ​​giver brugerne mulighed for at se de samme data som grafer og som samlinger. Brugere kan også transformere og slutte sig til grafer med Resilient Distribuerede datasæt (RDD'er).

Fejltolerance

Hadoop og Spark giver begge fejltolerance, men begge har forskellige tilgange. For både HDFS og GAR kontrollerer master-dæmoner (dvs. henholdsvis NameNode & ResourceManager) hjerterytme for slave-dæmoner (dvs. henholdsvis DataNode & NodeManager). Hvis en slave-dæmon mislykkes, omlægger master-dæmoner alle ventende og igangværende operationer til en anden slave. Denne metode er effektiv, men den kan også øge afslutningstiderne for operationer med enkelt svigt betydeligt. Da Hadoop bruger råvarehardware, er en anden måde, hvorpå HDFS sikrer fejltolerance, at replikere data.

Som vi diskuterede ovenfor er RDD'er byggesten til Apache Spark. RDD'er giver gnisttolerance over for gnist. De kan henvise til ethvert datasæt, der findes i eksternt lagringssystem som HDFS, HBase, delt filsystem. De kan betjenes parallelt.

RDD'er kan opretholde et datasæt i hukommelsen på tværs af operationer, hvilket gør fremtidige handlinger 10 gange meget hurtigere. Hvis en RDD går tabt, beregnes den automatisk igen ved hjælp af de originale transformationer. Dette er, hvordan Spark giver fejltolerance.

Sikkerhed

Hadoop understøtter Kerberos til godkendelse, men det er svært at håndtere. Ikke desto mindre understøtter den også tredjepartsleverandører som LDAP (Lightweight Directory Access Protocol) til godkendelse. De tilbyder også kryptering. HDFS understøtter traditionelle filtilladelser samt adgangskontrolister (ACL'er). Hadoop leverer serviceniveauautorisation, som garanterer, at klienter har de rigtige tilladelser til jobafgivelse.

Spark understøtter i øjeblikket godkendelse via en delt hemmelighed. Spark kan integreres med HDFS, og det kan bruge HDFS ACL'er og filniveautilladelser. Spark kan også køre på YARN ved at udnytte kapaciteten i Kerberos.

Brugstilfælde, hvor Hadoop passer bedst:

  • Analyse af arkivdata. YARN tillader parallel behandling af enorme mængder data. Dele af data behandles parallelt og separat på forskellige DataNodes & samler resultater fra hver NodeManager.
  • Hvis der ikke kræves øjeblikkelige resultater. Hadoop MapReduce er en god og økonomisk løsning til batchbehandling.

Brugstilfælde, hvor Spark passer bedst:

Realtids Big Data-analyse:

Realtids dataanalyse betyder behandling af data genereret af realtidsbegivenhedsstrømme, der kommer ind med en hastighed på millioner af begivenheder i sekundet, f.eks. Twitter-data. Styrken i Spark ligger i dets evner til at understøtte streaming af data sammen med distribueret behandling. Dette er en nyttig kombination, der leverer næsten realtidsbehandling af data. MapReduce er handicappet af en sådan fordel, da det var designet til at udføre batch-distribueret behandling på store mængder data. Realtidsdata kan stadig behandles på MapReduce, men dens hastighed er ikke tæt på Spark.

Spark hævder at behandle data 100 gange hurtigere end MapReduce, mens 10 gange hurtigere med diskene.

Grafbehandling:

De fleste grafbehandlingsalgoritmer som siderangering udfører flere gentagelser over de samme data, og dette kræver en meddelelsesoverførselsmekanisme. Vi er nødt til at programmere MapReduce eksplicit til at håndtere sådanne flere iterationer over de samme data. Groft fungerer det sådan: Læs data fra disken, og efter en bestemt iteration, skriv resultater til HDFS og læs derefter data fra HDFS til næste iteration. Dette er meget ineffektivt, da det involverer læsning og skrivning af data til disken, som involverer tunge I / O-operationer og datareplikering på tværs af klyngen for fejltolerance. Hver MapReduce-iteration har også meget høj latens, og den næste iteration kan kun begynde, når det forrige job er fuldstændigt afsluttet.

Også meddelelsesoverførsel kræver scoringer af nærliggende noder for at evaluere scoren for en bestemt node. Disse beregninger har brug for beskeder fra sine naboer (eller data på tværs af flere faser af jobbet), en mekanisme, som MapReduce mangler. Forskellige grafbehandlingsværktøjer som Pregel og GraphLab blev designet for at imødekomme behovet for en effektiv platform til grafbehandlingsalgoritmer. Disse værktøjer er hurtige og skalerbare, men er ikke effektive til oprettelse og efterbehandling af disse komplekse flertrinsalgoritmer.

Introduktion af Apache Spark løste disse problemer i høj grad. Spark indeholder et grafberegningsbibliotek kaldet GraphX, som forenkler vores liv. Beregning i hukommelse sammen med indbygget grafstøtte forbedrer algoritmens ydeevne med en størrelse på en eller to grader i forhold til traditionelle MapReduce-programmer. Spark bruger en kombination af Netty og Akka til at distribuere meddelelser over eksekutørerne. Lad os se på nogle statistikker, der skildrer præstationen for PageRank-algoritmen ved hjælp af Hadoop og Spark.

kan du kaste en dobbelt til en int

Iterative maskinlæringsalgoritmer:

Næsten alle maskinlæringsalgoritmer fungerer iterativt. Som vi har set tidligere involverer iterative algoritmer I / O-flaskehalse i MapReduce-implementeringerne. MapReduce bruger grovkornede opgaver (parallelitet på procesniveau), der er for tunge til iterative algoritmer. Gnist ved hjælp af Mesos - en distribueret systemkerne, cacher det mellemliggende datasæt efter hver iteration og kører flere iterationer på dette cachelagrede datasæt, hvilket reducerer I / O og hjælper med at køre algoritmen hurtigere på en fejltolerant måde.

Spark har et indbygget skalerbart maskinindlæringsbibliotek kaldet MLlib, der indeholder algoritmer af høj kvalitet, der udnytter iterationer og giver bedre resultater end en tilnærmelse, som nogle gange bruges på MapReduce.

  • Hurtig databehandling. Som vi ved tillader Spark behandling i hukommelsen. Som et resultat er Spark op til 100 gange hurtigere for data i RAM og op til 10 gange for data i lager.
  • Iterativ behandling. Sparks RDD'er tillader udførelse af flere korthandlinger i hukommelsen uden behov for at skrive midlertidige datasæt til en disk.
  • Næsten realtidsbehandling. Spark er et fremragende værktøj til at give øjeblikkelig forretningsindsigt. Dette er grunden til, at Spark bruges i kreditkorts streaming-system.

'Apache Spark: En dræber eller frelser af Apache Hadoop?'

Svaret på dette - Hadoop MapReduce og Apache Spark konkurrerer ikke med hinanden. Faktisk supplerer de hinanden ret godt. Hadoop bringer enorme datasæt under kontrol af handelssystemer. Spark leverer behandling i realtid i hukommelse til de datasæt, der kræver det. Når vi kombinerer, giver Apache Sparks evne, dvs. høj behandlingshastighed, avanceret analyse og multipel integrationsstøtte med Hadoop's lave omkostningsdrift på råvarehardware, de bedste resultater. Hadoop komplimenterer Apache Spark-mulighederne. Spark kan ikke helt erstatte Hadoop, men den gode nyhed er, at efterspørgslen efter Spark i øjeblikket er på et højeste niveau! Dette er det rigtige tidspunkt at mestre Spark og få mest muligt ud af de karrieremuligheder, der kommer din vej. Gå i gang nu!

Har du et spørgsmål til os? Nævn det i kommentarfeltet, så vi vender tilbage til dig tidligst.

Hvis du ønsker at lære Spark og opbygge en karriere inden for Spark-domæne til at udføre databehandling i stor skala ved hjælp af RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​og Scala med brugssager i det virkelige liv, så tjek vores interaktive, live-online her, der kommer med 24 * 7 support til at guide dig gennem hele din læringsperiode.