Spark vs Hadoop: wat is het beste big data-framework?



Deze blogpost gaat over apache spark vs hadoop. Het geeft u een idee over welk Big Data-raamwerk het juiste is om in verschillende scenario's te kiezen.

Ik zal deze Apache Spark vs Hadoop-blog starten door eerst Hadoop en Spark te introduceren om de juiste context voor beide frameworks te creëren. Vervolgens zullen we de beide Big Data-frameworks op verschillende parameters vergelijken om hun sterke en zwakke punten te analyseren.Maar wat de uitkomst van onze vergelijking ook mag zijn, u moet weten dat zowel Spark als Hadoop cruciale componenten zijn van het .

Apache Spark vs Hadoop: inleiding tot Hadoop

Hadoop is een framework waarmee u Big Data eerst in een gedistribueerde omgeving kunt opslaan, zodat u deze parallel kunt verwerken. Er zijn in wezen twee componenten in Hadoop:





HDFS

HDFS creëert een abstractie van bronnen, laat me het voor u vereenvoudigen. Net als bij virtualisatie kunt u HDFS logischerwijs zien als een enkele eenheid voor het opslaan van Big Data, maar in feite slaat u uw gegevens op over meerdere knooppunten op een gedistribueerde manier. Hier heb je een master-slave-architectuur. In HDFS is Namenode een masterknooppunt en zijn datanodes slaves.

NameNode

Het is de master-daemon die de DataNodes (slaafknooppunten) onderhoudt en beheert. Het registreert de metadata van alle bestanden die in het cluster zijn opgeslagen, bijv. locatie van de opgeslagen blokken, de grootte van de bestanden, machtigingen, hiërarchie, enz. Het registreert elke verandering die plaatsvindt in de metagegevens van het bestandssysteem.



Als een bestand bijvoorbeeld wordt verwijderd in HDFS, zal de NameNode dit onmiddellijk opnemen in de EditLog. Het ontvangt regelmatig een Heartbeat en een blokrapport van alle DataNodes in het cluster om ervoor te zorgen dat de DataNodes live zijn. Het houdt een overzicht bij van alle blokken in HDFS en in welke knooppunten deze blokken zijn opgeslagen.

DataNode

Dit zijn slaafdaemons die op elke slaafmachine draaien. De feitelijke gegevens worden opgeslagen op DataNodes. Ze zijn verantwoordelijk voor het dienen van lees- en schrijfverzoeken van de klanten. Ze zijn ook verantwoordelijk voor het maken van blokken, het verwijderen van blokken en het repliceren ervan op basis van de beslissingen die door de NameNode zijn genomen.

HDFS - Apache Spark versus Hadoop - EdurekaGAREN

YARN voert al uw verwerkingsactiviteiten uit door middelen toe te wijzen en taken te plannen. Het heeft twee belangrijke daemons, d.w.z. ResourceManager en NodeManager .



ResourceManager

Het is een component op clusterniveau (één voor elk cluster) en draait op de mastermachine. Het beheert bronnen en plant applicaties die bovenop YARN draaien.

NodeManager

Het is een component op knooppuntniveau (één op elk knooppunt) en draait op elke slaafmachine. Het is verantwoordelijk voor het beheer van containers en het bewaken van het resourcegebruik in elke container. Het houdt ook de status van knooppunten en logboekbeheer bij. Het communiceert continu met ResourceManager om up-to-date te blijven. U kunt dus parallelle verwerking op HDFS uitvoeren met MapReduce.

Om meer te weten te komen over Hadoop, kunt u dit doornemen blog. Nu we helemaal klaar zijn met de introductie van Hadoop, gaan we verder met de introductie van Spark.

Apache Spark vs Hadoop: inleiding tot Apache Spark

Apache Spark is een raamwerk voor realtime gegevensanalyse in een gedistribueerde computeromgeving. Het voert in-memory berekeningen uit om de snelheid van gegevensverwerking te verhogen. Het is sneller voor het verwerken van grootschalige gegevens omdat het berekeningen in het geheugen en andere optimalisaties benut. Daarom vereist het een hoge verwerkingskracht.

Resilient Distributed Dataset (RDD) is een fundamentele datastructuur van Spark. Het is een onveranderlijke gedistribueerde verzameling objecten. Elke gegevensset in RDD is onderverdeeld in logische partities, die op verschillende knooppunten van het cluster kunnen worden berekend. RDD's kunnen elk type Python-, Java- of Scala-objecten bevatten, inclusief door de gebruiker gedefinieerde klassen. Spark-componenten maken het snel en betrouwbaar. Apache Spark heeft de volgende componenten:

  1. Vonk kern - Spark Core is de basismotor voor grootschalige parallelle en gedistribueerde gegevensverwerking. Bovendien maken extra bibliotheken die bovenop de kern zijn gebouwd, diverse workloads mogelijk voor streaming, SQL en machine learning. Het is verantwoordelijk voor geheugenbeheer en foutherstel, planning, distributie en bewaking van taken op een cluster en interactie met opslagsystemen
  2. Spark-streaming - Spark Streaming is het onderdeel van Spark dat wordt gebruikt om real-time streaminggegevens te verwerken. Het is dus een nuttige toevoeging aan de kern-Spark API. Het maakt een hoge doorvoer en fouttolerante streamverwerking van live datastromen mogelijk
  3. Spark SQL : Spark SQL is een nieuwe module in Spark die relationele verwerking integreert met Spark's functionele programmeer-API. Het ondersteunt het opvragen van gegevens via SQL of via de Hive Query Language. Voor degenen onder u die bekend zijn met RDBMS, is Spark SQL een gemakkelijke overgang van uw eerdere tools waarmee u de grenzen van traditionele relationele gegevensverwerking kunt verleggen.
  4. GraphX : GraphX ​​is de Spark API voor grafieken en grafiekparallelle berekeningen. Het breidt dus de Spark RDD uit met een Resilient Distributed Property Graph. Op een hoog niveau breidt GraphX ​​de Spark RDD-abstractie uit door de introductie van de Resilient Distributed Property Graph: een gerichte multigraph met eigenschappen die aan elk hoekpunt en elke rand zijn gekoppeld.
  5. MLlib (Machine Learning): MLlib staat voor Machine Learning Library. Spark MLlib wordt gebruikt om machine learning uit te voeren in Apache Spark.

Zoals u kunt zien, wordt Spark geleverd met bibliotheken van hoog niveau, inclusief ondersteuning voor R, SQL, Python, Scala, Java enz. Deze standaardbibliotheken vergroten de naadloze integraties in complexe workflows. Bovendien kunnen er verschillende sets services mee worden geïntegreerd, zoals MLlib, GraphX, SQL + Data Frames, Streaming-services enz. Om de mogelijkheden te vergroten.

Om meer te weten te komen over Apache Spark, kunt u dit doornemen blog. Nu is de basis klaar voor Apache Spark versus Hadoop. Laten we verder gaan en Apache Spark vergelijken met Hadoop op verschillende parameters om hun sterke punten te begrijpen.

Apache Spark versus Hadoop: parameters om te vergelijken

Prestatie

Spark is snel omdat het verwerking in het geheugen heeft. Het kan ook een schijf gebruiken voor gegevens die niet allemaal in het geheugen passen. De in-memory verwerking van Spark levert bijna realtime analyses. Dit maakt Spark geschikt voor creditcardverwerkingssystemen, machine learning, beveiligingsanalyses en Internet of Things-sensoren.

Hadoop was oorspronkelijk opgezet om continu gegevens uit meerdere bronnen te verzamelen zonder je zorgen te hoeven maken over het type gegevens en deze op te slaan in een gedistribueerde omgeving. MapReduce maakt gebruik van batchverwerking. MapReduce is nooit gebouwd voor real-time verwerking, het belangrijkste idee achter YARN is parallelle verwerking via gedistribueerde datasets.

Het probleem met het vergelijken van de twee is dat ze de verwerking anders uitvoeren.

Makkelijk te gebruiken

Spark wordt geleverd met gebruiksvriendelijke API's voor Scala, Java, Python en Spark SQL. Spark SQL lijkt erg op SQL, dus het wordt gemakkelijker voor SQL-ontwikkelaars om het te leren. Spark biedt ook een interactieve shell voor ontwikkelaars om vragen te stellen en andere acties uit te voeren, en om onmiddellijke feedback te krijgen.

U kunt eenvoudig gegevens in Hadoop opnemen door shell te gebruiken of door het te integreren met meerdere tools zoals Sqoop, Flume etc. YARN is slechts een verwerkingsraamwerk en het kan worden geïntegreerd met meerdere tools zoals Hive en Pig. HIVE is een datawarehousing-component dat het lezen, schrijven en beheren van grote datasets in een gedistribueerde omgeving uitvoert met behulp van een SQL-achtige interface. U kunt dit doorstaan Hadoop-ecosysteem blog om meer te weten over de verschillende tools die kunnen worden geïntegreerd met Hadoop.

Kosten

Hadoop en Spark zijn beide open source-projecten van Apache, dus er zijn geen kosten voor de software. De kosten hangen alleen samen met de infrastructuur. Beide producten zijn zo ontworpen dat ze kunnen draaien op standaard hardware met een lage TCO.

microsoft sql server-zelfstudie voor beginners

Nu vraag je je misschien af ​​op welke manieren ze verschillen. Opslag en verwerking in Hadoop is op schijven gebaseerd en Hadoop gebruikt standaardhoeveelheden geheugen. Met Hadoop hebben we dus zowel veel schijfruimte als snellere schijven nodig. Hadoop heeft ook meerdere systemen nodig om de schijf-I / O te distribueren.

Vanwege de geheugenverwerking van Apache Spark heeft het veel geheugen nodig, maar het kan overweg met een standaardsnelheid en schijfhoeveelheid. Omdat schijfruimte relatief goedkoop is en omdat Spark geen schijf-I / O gebruikt voor verwerking, heeft het in plaats daarvan grote hoeveelheden RAM nodig om alles in het geheugen uit te voeren. Het Spark-systeem brengt dus meer kosten met zich mee.

Maar ja, een belangrijk ding om in gedachten te houden is dat de technologie van Spark het aantal vereiste systemen vermindert. Er zijn aanzienlijk minder systemen nodig die meer kosten. Er komt dus een punt waarop Spark de kosten per rekeneenheid verlaagt, zelfs met de extra RAM-vereiste.

Gegevensverwerking

Er zijn twee soorten gegevensverwerking: batchverwerking en streamverwerking.

Batchverwerking versus stroomverwerking

Batchverwerking : Batchverwerking is cruciaal geweest in de wereld van big data. Simpel gezegd, batchverwerking werkt met grote datavolumes die over een bepaalde periode zijn verzameld. Bij batchverwerking worden eerst gegevens verzameld en in een later stadium worden verwerkte resultaten geproduceerd.

Batchverwerking is een efficiënte manier om grote, statische gegevenssets te verwerken. Over het algemeen voeren we batchverwerking uit voor gearchiveerde gegevenssets. Bijvoorbeeld door het gemiddelde inkomen van een land te berekenen of de verandering in e-commerce in het afgelopen decennium te evalueren.

Stream verwerking : Stream processing is de huidige trend in de big data-wereld. De behoefte van het uur is snelheid en realtime informatie, en dat is wat stoomverwerking doet. Met batchverwerking kunnen bedrijven niet snel in realtime op veranderende bedrijfsbehoeften reageren, streamverwerking heeft een snelle groei van de vraag gezien.

Nu we terugkomen op Apache Spark versus Hadoop, is YARN in feite een raamwerk voor batchverwerking. Wanneer we een taak naar YARN sturen, leest het gegevens uit het cluster, voert het een bewerking uit en schrijft het de resultaten terug naar het cluster. Vervolgens leest het opnieuw de bijgewerkte gegevens, voert de volgende bewerking uit en schrijft de resultaten terug naar het cluster, enzovoort.

Spark voert vergelijkbare bewerkingen uit, maar gebruikt in-memory verwerking en optimaliseert de stappen. Met GraphX ​​kunnen gebruikers dezelfde gegevens bekijken als grafieken en als verzamelingen. Gebruikers kunnen grafieken ook transformeren en samenvoegen met Resilient Distributed Datasets (RDD's).

Fouttolerantie

Hadoop en Spark bieden beide fouttolerantie, maar hebben beide een andere aanpak. Voor HDFS en YARN beide, controleren master-daemons (respectievelijk NameNode en ResourceManager) de hartslag van slave-daemons (respectievelijk DataNode en NodeManager). Als een slaafdaemon faalt, plannen master-daemons alle lopende en lopende bewerkingen naar een andere slaaf. Deze methode is effectief, maar kan ook de doorlooptijd aanzienlijk verlengen voor bewerkingen met een enkele storing. Aangezien Hadoop standaardhardware gebruikt, is een andere manier waarop HDFS fouttolerantie garandeert, door gegevens te repliceren.

Zoals we hierboven hebben besproken, zijn RDD's bouwstenen van Apache Spark. RDD's bieden fouttolerantie voor Spark. Ze kunnen verwijzen naar elke dataset die aanwezig is in een extern opslagsysteem, zoals HDFS, HBase, gedeeld bestandssysteem. Ze kunnen parallel worden bediend.

RDD's kunnen een gegevensset in het geheugen bewaren voor alle bewerkingen, waardoor toekomstige acties 10 keer veel sneller zijn. Als een RDD verloren gaat, wordt deze automatisch opnieuw berekend met behulp van de originele transformaties. Dit is hoe Spark zorgt voor fouttolerantie.

Veiligheid

Hadoop ondersteunt Kerberos voor authenticatie, maar het is moeilijk te hanteren. Niettemin ondersteunt het ook externe leveranciers zoals LDAP (Lightweight Directory Access Protocol) voor authenticatie. Ze bieden ook codering. HDFS ondersteunt traditionele bestandsmachtigingen, evenals toegangscontrolelijsten (ACL's). Hadoop biedt Service Level Authorization, wat garandeert dat klanten de juiste rechten hebben voor het indienen van opdrachten.

Spark ondersteunt momenteel authenticatie via een gedeeld geheim. Spark kan worden geïntegreerd met HDFS en kan HDFS ACL's en machtigingen op bestandsniveau gebruiken. Spark kan ook op YARN draaien door gebruik te maken van de mogelijkheden van Kerberos.

Use-cases waar Hadoop het beste bij past:

  • Archiefgegevens analyseren. YARN maakt parallelle verwerking van enorme hoeveelheden gegevens mogelijk. Delen van gegevens worden parallel en afzonderlijk verwerkt op verschillende DataNodes en verzamelt het resultaat van elke NodeManager.
  • Als onmiddellijke resultaten niet vereist zijn. Hadoop MapReduce is een goede en voordelige oplossing voor batchverwerking.

Use-cases waar Spark het beste past:

Real-time big data-analyse:

Realtime gegevensanalyse betekent het verwerken van gegevens die worden gegenereerd door de realtime gebeurtenisstromen die binnenkomen met een snelheid van miljoenen gebeurtenissen per seconde, Twitter-gegevens bijvoorbeeld. De kracht van Spark ligt in zijn mogelijkheden om het streamen van gegevens samen met gedistribueerde verwerking te ondersteunen. Dit is een handige combinatie die zorgt voor een bijna realtime verwerking van gegevens. MapReduce heeft zo'n voordeel omdat het is ontworpen om batchgewijs gedistribueerde verwerking uit te voeren op grote hoeveelheden gegevens. Real-time gegevens kunnen nog steeds worden verwerkt op MapReduce, maar de snelheid komt lang niet in de buurt van die van Spark.

Spark claimt gegevens 100x sneller te verwerken dan MapReduce, terwijl 10x sneller met de schijven.

Grafiekverwerking:

De meeste algoritmen voor het verwerken van grafieken, zoals page rank, voeren meerdere iteraties uit over dezelfde gegevens en dit vereist een mechanisme voor het doorgeven van berichten. We moeten MapReduce expliciet programmeren om dergelijke meerdere iteraties over dezelfde gegevens te verwerken. Het werkt grofweg als volgt: lees gegevens van de schijf en schrijf na een bepaalde iteratie resultaten naar de HDFS en lees vervolgens de gegevens van de HDFS voor de volgende iteratie. Dit is erg inefficiënt omdat het het lezen en schrijven van gegevens naar de schijf inhoudt, wat zware I / O-bewerkingen en gegevensreplicatie over het cluster met zich meebrengt voor fouttolerantie. Bovendien heeft elke MapReduce-iteratie een zeer hoge latentie en kan de volgende iteratie pas beginnen nadat de vorige taak volledig is voltooid.

Ook vereist het doorgeven van berichten scores van aangrenzende knooppunten om de score van een bepaald knooppunt te evalueren. Deze berekeningen hebben berichten van de buren nodig (of gegevens over meerdere fasen van de taak), een mechanisme dat MapReduce mist. Verschillende hulpmiddelen voor het verwerken van grafieken, zoals Pregel en GraphLab, werden ontworpen om tegemoet te komen aan de behoefte aan een efficiënt platform voor algoritmen voor het verwerken van grafieken. Deze tools zijn snel en schaalbaar, maar niet efficiënt voor het creëren en nabewerken van deze complexe meerfasige algoritmen.

diep leren versus machine learning versus patroonherkenning

De introductie van Apache Spark loste deze problemen grotendeels op. Spark bevat een grafische rekenbibliotheek genaamd GraphX ​​die ons leven vereenvoudigt. In-memory berekening samen met ingebouwde grafische ondersteuning verbetert de prestaties van het algoritme met een magnitude van één of twee graden ten opzichte van traditionele MapReduce-programma's. Spark gebruikt een combinatie van Netty en Akka om berichten over de uitvoerders te verspreiden. Laten we eens kijken naar enkele statistieken die de prestaties van het PageRank-algoritme weergeven met Hadoop en Spark.

Iteratieve algoritmen voor machine learning:

Bijna alle algoritmen voor machine learning werken iteratief. Zoals we eerder hebben gezien, brengen iteratieve algoritmen I / O-bottlenecks in de MapReduce-implementaties met zich mee. MapReduce maakt gebruik van grofkorrelige taken (parallellisme op taakniveau) die te zwaar zijn voor iteratieve algoritmen. Spark met de hulp van Mesos - een gedistribueerde systeemkernel, cachet de tussenliggende dataset na elke iteratie en voert meerdere iteraties uit op deze gecachte dataset, waardoor de I / O wordt verminderd en het algoritme sneller en fouttolerant kan worden uitgevoerd.

Spark heeft een ingebouwde schaalbare machine learning-bibliotheek genaamd MLlib die hoogwaardige algoritmen bevat die gebruik maken van iteraties en betere resultaten opleveren dan benaderingen in één doorgang die soms op MapReduce worden gebruikt.

  • Snelle gegevensverwerking. Zoals we weten, staat Spark verwerking in het geheugen toe. Hierdoor is Spark tot 100 keer sneller voor gegevens in RAM en tot 10 keer voor gegevens in opslag.
  • Iteratieve verwerking. Met de RDD's van Spark kunnen verschillende kaartbewerkingen in het geheugen worden uitgevoerd, zonder dat tussentijdse gegevenssets naar een schijf hoeven te worden geschreven.
  • Bijna realtime verwerking. Spark is een uitstekende tool om direct zakelijke inzichten te geven. Dit is de reden waarom Spark wordt gebruikt in het streaming-systeem van creditcards.

'Apache Spark: A Killer or Savior of Apache Hadoop?'

Het antwoord hierop - Hadoop MapReduce en Apache Spark concurreren niet met elkaar. Ze vullen elkaar zelfs heel goed aan. Hadoop brengt enorme datasets onder controle door commodity-systemen. Spark biedt realtime verwerking in het geheugen voor de gegevenssets die dit nodig hebben. Wanneer we het vermogen van Apache Spark, d.w.z. hoge verwerkingssnelheid, geavanceerde analyses en ondersteuning voor meervoudige integratie, combineren met de goedkope werking van Hadoop op standaardhardware, levert dit de beste resultaten op. Hadoop vormt een aanvulling op de Apache Spark-mogelijkheden. Spark kan Hadoop niet volledig vervangen, maar het goede nieuws is dat de vraag naar Spark momenteel een recordhoogte heeft bereikt! Dit is het juiste moment om Spark onder de knie te krijgen en het meeste uit de carrièremogelijkheden te halen die op je pad komen. Begin nu!

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen zo spoedig mogelijk contact met u op.

Als je Spark wilt leren en een carrière wilt opbouwen in het domein van Spark om grootschalige gegevensverwerking uit te voeren met behulp van RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​en Scala met Real Life use-cases, bekijk dan onze interactieve, live-online hier, dat wordt geleverd met 24 * 7 ondersteuning om u tijdens uw leerperiode te begeleiden.