Spark vs Hadoop: Vilket är det bästa Big Data Framework?

Detta blogginlägg talar om apache gnista vs hadoop. Det ger dig en uppfattning om vilken rätt Big Data-ram du kan välja i olika scenarier.

Jag kommer att starta den här Apache Spark vs Hadoop-bloggen genom att först introducera Hadoop och Spark för att ställa in rätt sammanhang för båda ramarna. Sedan kommer vi att jämföra båda Big Data-ramarna på olika parametrar för att analysera deras styrkor och svagheter.Men oavsett vad resultatet av vår jämförelse blir, bör du veta att både Spark och Hadoop är viktiga komponenter i .

Apache Spark vs Hadoop: Introduktion till Hadoop

Hadoop är ett ramverk som låter dig först lagra Big Data i en distribuerad miljö så att du kan bearbeta det parallellt. Det finns i princip två komponenter i Hadoop:





HDFS

HDFS skapar en abstraktion av resurser, låt mig förenkla det för dig. På samma sätt som virtualisering kan du se HDFS logiskt som en enda enhet för lagring av Big Data, men faktiskt lagrar du dina data över flera noder på ett distribuerat sätt. Här har du master-slave-arkitektur. I HDFS är Namenode en huvudnod och Datanoder är slavar.

NameNode

Det är masterdemonen som underhåller och hanterar DataNodes (slavnoder). Den registrerar metadata för alla filer som lagras i klustret, t.ex. plats för lagrade block, filernas storlek, behörigheter, hierarki osv. Den registrerar varje ändring som sker i filsystemets metadata.



Till exempel, om en fil raderas i HDFS, registrerar NameNode omedelbart detta i EditLog. Den får regelbundet en hjärtslag och en blockrapport från alla DataNodes i klustret för att säkerställa att DataNodes är live. Det registrerar alla block i HDFS och i vilka noder dessa block lagras.

DataNode

Dessa är slavdemoner som körs på varje slavmaskin. Den faktiska informationen lagras på DataNodes. De ansvarar för att servera läs- och skrivförfrågningar från klienterna. De ansvarar också för att skapa block, ta bort block och replikera detsamma baserat på de beslut som tagits av NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaGARN

YARN utför alla dina bearbetningsaktiviteter genom att fördela resurser och schemalägga uppgifter. Den har två stora demoner, dvs. ResourceManager och NodeManager .



ResourceManager

Det är en klusternivå (en för varje kluster) -komponent och körs på mastermaskinen. Den hanterar resurser och schemalägger applikationer som körs ovanpå YARN.

NodeManager

Det är en nodnivåkomponent (en på varje nod) och körs på varje slavmaskin. Det är ansvarigt för att hantera containrar och övervaka resursanvändningen i varje container. Det håller också reda på nodhälsa och logghantering. Den kommunicerar kontinuerligt med ResourceManager för att hålla sig uppdaterad. Så du kan utföra parallell bearbetning på HDFS med MapReduce.

För att lära dig mer om Hadoop kan du gå igenom detta blogg. Nu, när vi alla är redo med Hadoop-introduktion, går vi vidare till Spark-introduktion.

Apache Spark vs Hadoop: Introduktion till Apache Spark

Apache Spark är ett ramverk för dataanalys i realtid i en distribuerad datormiljö. Den utför beräkningar i minnet för att öka databehandlingshastigheten. Det är snabbare för bearbetning av storskalig data eftersom det utnyttjar beräkningar i minnet och andra optimeringar. Därför kräver det hög processorkraft.

Resilient Distributed Dataset (RDD) är en grundläggande datastruktur för Spark. Det är en oföränderlig distribuerad samling objekt. Varje dataset i RDD är uppdelat i logiska partitioner som kan beräknas på olika noder i klustret. RDD kan innehålla alla typer av Python-, Java- eller Scala-objekt, inklusive användardefinierade klasser. Gnistkomponenter gör det snabbt och pålitligt. Apache Spark har följande komponenter:

  1. Spark Core - Spark Core är basmotorn för storskalig parallell och distribuerad databehandling. Dessutom tillåter ytterligare bibliotek som är byggda ovanpå kärnan olika arbetsbelastningar för streaming, SQL och maskininlärning. Det ansvarar för minneshantering och felåterställning, schemaläggning, distribution och övervakning av jobb i ett kluster och interagerar med lagringssystem
  2. Spark Streaming - Spark Streaming är den komponent i Spark som används för att behandla realtids streamingdata. Således är det ett användbart tillskott till kärnan Spark API. Det möjliggör hög genomströmning och feltolerant strömbehandling av live dataströmmar
  3. Spark SQL : Spark SQL är en ny modul i Spark som integrerar relationsbehandling med Sparks funktionella programmerings-API. Den stöder frågor från data antingen via SQL eller via Hive Query Language. För dig som känner till RDBMS kommer Spark SQL att vara en enkel övergång från dina tidigare verktyg där du kan utöka gränserna för traditionell relationsbearbetning.
  4. GraphX : GraphX ​​är Spark API för grafer och graf-parallell beräkning. Således utvidgar den Spark RDD med en elastisk distribuerad fastighetsgraf. På hög nivå utökar GraphX ​​Spark RDD-abstraktionen genom att introducera Resilient Distribuerade egenskapsdiagram: en riktad multigraph med egenskaper fästa vid varje toppunkt och kant.
  5. MLlib (Machine Learning): MLlib står för Machine Learning Library. Spark MLlib används för att utföra maskininlärning i Apache Spark.

Som du kan se kommer Spark packat med högnivåbibliotek, inklusive stöd för R, SQL, Python, Scala, Java etc. Dessa standardbibliotek ökar de sömlösa integrationerna i komplexa arbetsflöden. Över detta tillåter det också olika uppsättningar tjänster att integreras med det som MLlib, GraphX, SQL + Data Frames, Streaming-tjänster etc. för att öka dess kapacitet.

För att lära dig mer om Apache Spark kan du gå igenom detta blogg. Nu är marken klar för Apache Spark vs Hadoop. Låt oss gå vidare och jämföra Apache Spark med Hadoop på olika parametrar för att förstå deras styrkor.

Apache Spark vs Hadoop: Parametrar att jämföra

Prestanda

Spark är snabb eftersom den har minnesbehandling. Det kan också använda disk för data som inte alla passar in i minnet. Sparks bearbetning i minnet levererar analys i realtid. Detta gör Spark lämplig för kreditkortsbehandlingssystem, maskininlärning, säkerhetsanalys och sensorer Internet of Things.

Hadoop var ursprungligen inställt på att kontinuerligt samla in data från flera källor utan att oroa sig för datatypen och lagra den i distribuerad miljö. MapReduce använder batchbearbetning. MapReduce byggdes aldrig för realtidsbehandling, huvudidén bakom YARN är parallell bearbetning över distribuerad dataset.

Problemet med att jämföra de två är att de utför bearbetning på olika sätt.

Enkel användning

Spark levereras med användarvänliga API: er för Scala, Java, Python och Spark SQL. Spark SQL liknar mycket SQL, så det blir lättare för SQL-utvecklare att lära sig det. Spark tillhandahåller också ett interaktivt skal för utvecklare att fråga och utföra andra åtgärder och få omedelbar feedback.

Du kan enkelt ta in data i Hadoop antingen genom att använda skal eller integrera det med flera verktyg som Sqoop, Flume etc. YARN är bara ett bearbetningsramverk och det kan integreras med flera verktyg som Hive och Pig. HIVE är en datalagringskomponent som utför läsning, skrivning och hantering av stora datamängder i en distribuerad miljö med hjälp av SQL-liknande gränssnitt. Du kan gå igenom detta Hadoop ekosystem blogga för att veta om de olika verktygen som kan integreras med Hadoop.

Kostar

Hadoop och Spark är båda Apache-projekt med öppen källkod, så det kostar inte programvaran. Kostnad är bara förknippad med infrastrukturen. Båda produkterna är utformade på ett sådant sätt att de kan köras på råvaruhårdvara med låg TCO.

Nu kanske du undrar hur de skiljer sig åt. Lagring och bearbetning i Hadoop är diskbaserad och Hadoop använder standardmängder minne. Så med Hadoop behöver vi mycket diskutrymme och snabbare diskar. Hadoop kräver också flera system för att distribuera disk-I / O.

På grund av Apache Sparks i minnesbearbetning kräver det mycket minne, men det kan hantera en standardhastighet och mängd disk. Eftersom diskutrymme är en relativt billig vara och eftersom Spark inte använder disk I / O för bearbetning, kräver det istället stora mängder RAM för att köra allt i minnet. Således medför Spark-systemet mer kostnad.

Men ja, en viktig sak att tänka på är att Sparks teknik minskar antalet system som krävs. Det behöver betydligt färre system som kostar mer. Så det kommer att finnas en punkt där Spark minskar kostnaderna per beräkningsenhet även med ytterligare RAM-krav.

Databehandling

Det finns två typer av databehandling: Batchbehandling & Stream Processing.

Batchbehandling vs Stream-bearbetning

Satsvis bearbetning : Batchbehandling har varit avgörande för stor datavärlden. På det enklaste sättet arbetar batchbearbetning med höga datavolymer som samlats in under en period. I batchbearbetning samlas data in först och sedan produceras bearbetade resultat i ett senare skede.

Batchbehandling är ett effektivt sätt att bearbeta stora, statiska datamängder. Generellt utför vi batchbehandling för arkiverade datamängder. Till exempel att beräkna ett lands genomsnittliga inkomst eller utvärdera förändringen i e-handel under det senaste decenniet.

Strömbearbetning : Strömbehandling är den nuvarande trenden i big data-världen. Timens behov är hastighets- och realtidsinformation, vilket är vad ångbearbetning gör. Partibearbetning tillåter inte företag att snabbt reagera på förändrade affärsbehov i realtid, strömbehandling har ökat snabbt i efterfrågan.

Nu kommer vi tillbaka till Apache Spark vs Hadoop och YARN är i grunden ett ramverk för batchbehandling. När vi skickar ett jobb till YARN läser det data från klustret, utför operation och skriver tillbaka resultaten till klustret. Sedan läser den igen de uppdaterade data, utför nästa åtgärd och skriver resultaten tillbaka till klustret och så vidare.

Spark utför liknande operationer, men den använder bearbetning i minnet och optimerar stegen. GraphX ​​tillåter användare att se samma data som diagram och som samlingar. Användare kan också omvandla och gå med i grafer med Resilient Distributed Datasets (RDDs).

Feltolerans

Hadoop och Spark ger båda feltolerans, men båda har olika inställning. För både HDFS och YARN kontrollerar masterdemoner (dvs. NameNode & ResourceManager respektive) hjärtslag hos slavdemoner (dvs. DataNode & NodeManager respektive). Om någon slavdemon misslyckas omplanerar master-demoner alla väntande och pågående operationer till en annan slav. Den här metoden är effektiv, men den kan avsevärt öka kompletteringstiderna för operationer med enstaka fel också. Eftersom Hadoop använder råvarumaskinvara är ett annat sätt på vilket HDFS säkerställer feltolerans genom att replikera data.

Som vi diskuterade ovan är RDDs byggstenar för Apache Spark. RDD ger Spark fel tolerans. De kan referera till alla datauppsättningar som finns i externt lagringssystem som HDFS, HBase, delat filsystem. De kan drivas parallellt.

RDD kan bestå en dataset i minnet över operationer, vilket gör framtida åtgärder 10 gånger mycket snabbare. Om en RDD går förlorad kommer den automatiskt att beräknas igen med de ursprungliga transformationerna. Så här ger Spark fel-tolerans.

säkerhet

Hadoop stöder Kerberos för autentisering, men det är svårt att hantera. Ändå stöder den också tredjepartsleverantörer som LDAP (Lightweight Directory Access Protocol) för autentisering. De erbjuder också kryptering. HDFS stöder traditionella filbehörigheter samt åtkomstkontrollistor (ACL). Hadoop tillhandahåller auktorisation för servicenivå, vilket garanterar att kunder har rätt behörighet för inlämning av jobb.

Spark stöder för närvarande autentisering via en delad hemlighet. Spark kan integreras med HDFS och det kan använda HDFS ACL och behörigheter på filnivå. Spark kan också köras på YARN som utnyttjar Kerberos kapacitet.

Användningsfall där Hadoop passar bäst:

  • Analysera arkivdata. YARN tillåter parallell bearbetning av stora mängder data. Delar av data bearbetas parallellt och separat på olika DataNoder och samlar resultat från varje NodeManager.
  • Om omedelbara resultat inte krävs. Hadoop MapReduce är en bra och ekonomisk lösning för batchbearbetning.

Användningsfall där Spark passar bäst:

Realtids Big Data-analys:

Realtidsdataanalys betyder bearbetning av data som genereras av realtidshändelseströmmar som kommer in i en takt av miljoner händelser per sekund, till exempel Twitter-data. Styrkan i Spark ligger i dess förmåga att stödja strömning av data tillsammans med distribuerad bearbetning. Detta är en användbar kombination som levererar nära realtidsbehandling av data. MapReduce är funktionshindrad av en sådan fördel eftersom den var utformad för att utföra batchdistribuerad bearbetning på stora mängder data. Realtidsdata kan fortfarande bearbetas på MapReduce men dess hastighet är inte i närheten av Spark.

Spark hävdar att hanterar data 100 gånger snabbare än MapReduce, medan 10 gånger snabbare med diskarna.

program för att vända ett nummer i Java

Grafbehandling:

De flesta grafbehandlingsalgoritmer som sidrankning utför flera iterationer över samma data och detta kräver en mekanism för meddelandeöverföring. Vi måste programmera MapReduce uttryckligen för att hantera sådana flera iterationer över samma data. Ungefär fungerar det så här: Läs data från skivan och efter en viss iteration, skriv resultat till HDFS och läs sedan data från HDFS för nästa iteration. Detta är mycket ineffektivt eftersom det handlar om att läsa och skriva data till disken som involverar tunga I / O-operationer och datareplikering över klustret för feltolerans. Dessutom har varje MapReduce-iteration mycket hög latens, och nästa iteration kan börja först efter att det tidigare jobbet har slutförts helt.

Meddelandeöverföring kräver också poäng av angränsande noder för att utvärdera poängen för en viss nod. Dessa beräkningar behöver meddelanden från sina grannar (eller data över flera steg i jobbet), en mekanism som MapReduce saknar. Olika grafbehandlingsverktyg som Pregel och GraphLab designades för att tillgodose behovet av en effektiv plattform för grafbehandlingsalgoritmer. Dessa verktyg är snabba och skalbara, men är inte effektiva för skapande och efterbehandling av dessa komplexa flerstegsalgoritmer.

Introduktion av Apache Spark löste dessa problem i stor utsträckning. Spark innehåller ett grafberäkningsbibliotek som heter GraphX ​​vilket förenklar vårt liv. Beräkning i minnet tillsammans med inbyggt grafstöd förbättrar algoritmens prestanda med en storlek på en eller två grader jämfört med traditionella MapReduce-program. Spark använder en kombination av Netty och Akka för att distribuera meddelanden över exekutörerna. Låt oss titta på lite statistik som visar resultatet för PageRank-algoritmen med Hadoop och Spark.

Iterativa maskininlärningsalgoritmer:

Nästan alla maskininlärningsalgoritmer fungerar iterativt. Som vi har sett tidigare involverar iterativa algoritmer I / O-flaskhalsar i MapReduce-implementeringarna. MapReduce använder grovkorniga uppgifter (aktivitetsnivåparallellism) som är för tunga för iterativa algoritmer. Spark med hjälp av Mesos - en distribuerad systemkärna, cachar den mellanliggande datasetet efter varje iteration och kör flera iterationer på denna cachade dataset som minskar I / O och hjälper till att köra algoritmen snabbare på ett feltolerant sätt.

Spark har ett inbyggt skalbart maskininlärningsbibliotek som heter MLlib som innehåller algoritmer av hög kvalitet som utnyttjar iterationer och ger bättre resultat än en enskild approximation som ibland används på MapReduce.

  • Snabb databehandling. Som vi vet tillåter Spark bearbetning i minnet. Som ett resultat är Spark upp till 100 gånger snabbare för data i RAM och upp till 10 gånger för data i lagring.
  • Iterativ bearbetning. Sparks RDD-skivor gör det möjligt att utföra flera kartåtgärder i minnet, utan att behöva skriva tillfälliga datamängder till en disk.
  • Nära realtidsbehandling. Spark är ett utmärkt verktyg för att ge omedelbar affärsinformation. Detta är anledningen till att Spark används i kreditkorts streaming-system.

'Apache Spark: En mördare eller frälsare av Apache Hadoop?'

Svaret på detta - Hadoop MapReduce och Apache Spark tävlar inte med varandra. Faktum är att de kompletterar varandra ganska bra. Hadoop tar enorma datamängder under kontroll av råvarusystem. Spark ger bearbetning i minnet i realtid för de datamängder som kräver det. När vi kombinerar Apache Sparks förmåga, dvs. hög bearbetningshastighet, avancerad analys och multipel integrationsstöd med Hadoops låga kostnad på råvaruhårdvara, ger det bästa resultat. Hadoop komplimangerar Apache Spark-möjligheter. Spark kan inte ersätta Hadoop helt och hållet, men den goda nyheten är att efterfrågan på Spark för närvarande är på en rekordhög nivå! Det här är rätt tid att bemästra Spark och få ut det mesta av de karriärmöjligheter som kommer din väg. Börja nu!

Har du en fråga till oss? Vänligen nämna det i kommentarfältet så återkommer vi tidigast.

Om du vill lära dig Spark och bygga en karriär inom Spark-domänen för att utföra storskalig databehandling med RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​och Scala med användningsfall i verkligheten, kolla in vår interaktiva, live-online här, som kommer med 24 * 7 support för att vägleda dig under hela din inlärningsperiod.