Een introductiegids voor MapReduce in Big Data

MapReduce biedt een effectieve, snellere en kosteneffectieve manier om applicaties te maken.

Dit model maakt gebruik van geavanceerde concepten zoals parallelle verwerking, gegevenslokalisatie, enz. om programmeurs en organisaties veel voordelen te bieden.

Maar er zijn zoveel programmeermodellen en frameworks op de markt dat het moeilijk kiezen wordt.

En als het om Big Data gaat, kun je niet zomaar iets kiezen. U moet dergelijke technologieën kiezen die grote hoeveelheden gegevens aankunnen.

MapReduce is daar een geweldige oplossing voor.

In dit artikel zal ik bespreken wat MapReduce werkelijk is en hoe het nuttig kan zijn.

Laten we beginnen!

Wat is MapReduce?

MapReduce is een programmeermodel of softwareframework binnen het Apache Hadoop-framework. Het wordt gebruikt voor het maken van toepassingen die in staat zijn om massale gegevens parallel te verwerken op duizenden knooppunten (clusters of rasters genoemd) met fouttolerantie en betrouwbaarheid.

Deze gegevensverwerking gebeurt op een database of bestandssysteem waar de gegevens zijn opgeslagen. MapReduce kan werken met een Hadoop File System (HDFS) om toegang te krijgen tot grote datavolumes en deze te beheren.

Dit framework is in 2004 geïntroduceerd door Google en is gepopulariseerd door Apache Hadoop. Het is een verwerkingslaag of engine in Hadoop met MapReduce-programma’s die in verschillende talen zijn ontwikkeld, waaronder Java, C++, Python en Ruby.

De MapReduce-programma’s in cloud computing lopen parallel en zijn dus geschikt voor het uitvoeren van data-analyse op grote schaal.

MapReduce is bedoeld om een ​​taak op te splitsen in kleinere, meerdere taken met behulp van de functies “kaart” en “verkleinen”. Het brengt elke taak in kaart en reduceert deze vervolgens tot verschillende gelijkwaardige taken, wat resulteert in minder verwerkingskracht en overhead op het clusternetwerk.

Voorbeeld: Stel dat u een maaltijd bereidt voor een huis vol gasten. Dus als je alle gerechten probeert te bereiden en alle processen zelf doet, wordt het hectisch en tijdrovend.

Maar stel dat u enkele van uw vrienden of collega’s (geen gasten) erbij betrekt om u te helpen bij het bereiden van de maaltijd door verschillende processen uit te delen aan een andere persoon die de taken tegelijkertijd kan uitvoeren. Dan bereid je de maaltijd veel sneller en gemakkelijker terwijl je gasten nog in huis zijn.

MapReduce werkt op een vergelijkbare manier met gedistribueerde taken en parallelle verwerking om een ​​snellere en gemakkelijkere manier te bieden om een ​​bepaalde taak uit te voeren.

Apache Hadoop stelt programmeurs in staat om MapReduce te gebruiken om modellen uit te voeren op grote gedistribueerde datasets en om geavanceerde machine learning en statistische technieken te gebruiken om patronen te vinden, voorspellingen te doen, correlaties op te sporen en meer.

Kenmerken van MapReduce

Enkele van de belangrijkste kenmerken van MapReduce zijn:

  • Gebruikersinterface: u krijgt een intuïtieve gebruikersinterface die redelijke details biedt over elk raamwerkaspect. Het helpt u bij het naadloos configureren, toepassen en afstemmen van uw taken.

  • Payload: toepassingen maken gebruik van Mapper- en Reducer-interfaces om de kaart- en reductiefuncties in te schakelen. De Mapper wijst invoersleutel-waardeparen toe aan tussenliggende sleutel-waardeparen. Reducer wordt gebruikt om tussenliggende sleutel-waardeparen die een sleutel delen te reduceren tot andere kleinere waarden. Het heeft drie functies: sorteren, shuffle en verkleinen.
  • Partitioner: het regelt de verdeling van de tussenliggende kaartuitvoertoetsen.
  • Reporter: het is een functie om voortgang te rapporteren, tellers bij te werken en statusberichten in te stellen.
  • Tellers: het vertegenwoordigt globale tellers die een MapReduce-toepassing definieert.
  • OutputCollector: Deze functie verzamelt outputgegevens van Mapper of Reducer in plaats van tussenoutputs.
  • RecordWriter: het schrijft de gegevensuitvoer of sleutel-waardeparen naar het uitvoerbestand.
  • DistributedCache: het distribueert op efficiënte wijze grotere, alleen-lezen bestanden die toepassingsspecifiek zijn.
  • Gegevenscompressie: de applicatieschrijver kan zowel taakuitvoer als tussenliggende kaartuitvoer comprimeren.
  • Overslaan van slechte records: u kunt verschillende slechte records overslaan tijdens het verwerken van uw kaartinvoer. Deze functie kan worden beheerd via de klasse – SkipBadRecords.
  • Foutopsporing: u krijgt de mogelijkheid om door de gebruiker gedefinieerde scripts uit te voeren en foutopsporing in te schakelen. Als een taak in MapReduce mislukt, kunt u uw foutopsporingsscript uitvoeren en de problemen vinden.
  Wat moet u doen als u een phishing-e-mail ontvangt?

KaartVerminder Architectuur

Laten we de architectuur van MapReduce begrijpen door dieper in te gaan op de componenten ervan:

  • Taak: Een taak in MapReduce is de daadwerkelijke taak die de MapReduce-client wil uitvoeren. Het bestaat uit verschillende kleinere taken die samen de uiteindelijke taak vormen.
  • Taakgeschiedenisserver: het is een daemonproces om alle historische gegevens over een toepassing of taak op te slaan en op te slaan, zoals logboeken die zijn gegenereerd na of voor het uitvoeren van een taak.
  • Klant: Een klant (programma of API) brengt een taak naar MapReduce voor uitvoering of verwerking. In MapReduce kunnen één of meerdere klanten continu opdrachten naar de MapReduce Manager sturen voor verwerking.
  • MapReduce Master: Een MapReduce Master verdeelt een taak in verschillende kleinere delen, zodat taken gelijktijdig worden uitgevoerd.
  • Jobparts: De subjobs of jobparts worden verkregen door de primaire job te splitsen. Er wordt aan gewerkt en uiteindelijk gecombineerd om de laatste taak te creëren.
  • Invoergegevens: dit is de gegevensset die naar MapReduce wordt gevoerd voor taakverwerking.
  • Uitvoergegevens: dit is het eindresultaat dat wordt verkregen zodra de taak is verwerkt.

Wat er in deze architectuur echt gebeurt, is dat de klant een taak indient bij de MapReduce Master, die deze opdeelt in kleinere, gelijke delen. Hierdoor kan de taak sneller worden verwerkt, omdat kleinere taken minder tijd nodig hebben om te worden verwerkt in plaats van grotere taken.

Zorg er echter voor dat de taken niet in te kleine taken worden verdeeld, want als u dat doet, krijgt u mogelijk te maken met een grotere overhead voor het beheren van splitsingen en verspilt u daar veel tijd aan.

Vervolgens worden de taakonderdelen beschikbaar gesteld om verder te gaan met de taken Kaart en Vermindering. Verder hebben de Map en Reduce taken een passend programma gebaseerd op de use case waar het team aan werkt. De programmeur ontwikkelt de op logica gebaseerde code om aan de vereisten te voldoen.

Hierna worden de invoergegevens naar de kaarttaak gevoerd, zodat de kaart snel de uitvoer als een sleutel-waardepaar kan genereren. In plaats van deze gegevens op HDFS op te slaan, wordt een lokale schijf gebruikt om de gegevens op te slaan om de kans op replicatie te elimineren.

Zodra de taak is voltooid, kunt u de uitvoer weggooien. Daarom wordt replicatie een overkill wanneer u de uitvoer op HDFS opslaat. De uitvoer van elke kaarttaak wordt naar de verkleiningstaak gevoerd en de kaartuitvoer wordt geleverd aan de machine waarop de verkleiningstaak wordt uitgevoerd.

Vervolgens wordt de uitvoer samengevoegd en doorgegeven aan de reduceerfunctie die door de gebruiker is gedefinieerd. Ten slotte wordt de verminderde uitvoer opgeslagen op een HDFS.

Bovendien kan het proces verschillende Map and Reduce-taken hebben voor gegevensverwerking, afhankelijk van het einddoel. De algoritmen Map en Reduce zijn geoptimaliseerd om de complexiteit van tijd of ruimte minimaal te houden.

Aangezien MapReduce voornamelijk Map- en Reduce-taken omvat, is het relevant om er meer over te begrijpen. Laten we dus de fasen van MapReduce bespreken om een ​​duidelijk beeld te krijgen van deze onderwerpen.

Fasen van MapReduce

Kaart

De invoergegevens worden in deze fase toegewezen aan de uitvoer- of sleutelwaardeparen. Hier kan de sleutel verwijzen naar de id van een adres, terwijl de waarde de werkelijke waarde van dat adres kan zijn.

Er zijn slechts één op twee taken in deze fase: splitsen en in kaart brengen. Splitsing betekent de sub- of taakonderdelen die zijn gescheiden van de hoofdtaak. Dit worden ook wel invoersplitsingen genoemd. Een invoersplitsing kan dus een invoerbrok worden genoemd dat door een kaart wordt verbruikt.

Vervolgens vindt de mappingtaak plaats. Het wordt beschouwd als de eerste fase tijdens het uitvoeren van een programma voor het verkleinen van de kaart. Hier worden gegevens in elke splitsing doorgegeven aan een kaartfunctie om de uitvoer te verwerken en te genereren.

  Gegevens beheren en overdragen op de Nintendo Switch

De functie – Map() wordt uitgevoerd in de geheugenrepository op de invoersleutel-waardeparen, waardoor een tussenliggend sleutel-waardepaar wordt gegenereerd. Dit nieuwe sleutel-waardepaar zal werken als invoer die naar de functie Reduce() of Reducer moet worden gevoerd.

Verminderen

De tussenliggende sleutel-waardeparen die in de toewijzingsfase zijn verkregen, werken als invoer voor de functie Reduceren of Reducer. Net als bij de mapping-fase zijn er twee taken bij betrokken: shuffle en verminderen.

De verkregen sleutel-waardeparen worden dus gesorteerd en geschud om naar de Reducer te worden gevoerd. Vervolgens groepeert of aggregeert de Reducer de gegevens op basis van het sleutel/waarde-paar op basis van het reducer-algoritme dat de ontwikkelaar heeft geschreven.

Hier worden de waarden van de schudfase gecombineerd om een ​​uitvoerwaarde te retourneren. Deze fase vat de hele dataset samen.

Nu wordt het volledige proces van het uitvoeren van Map and Reduce-taken beheerd door sommige entiteiten. Dit zijn:

  • Job Tracker: In eenvoudige bewoordingen fungeert een jobtracker als een master die verantwoordelijk is voor het volledig uitvoeren van een ingediende taak. De taaktracker beheert alle taken en resources in een cluster. Bovendien plant de jobtracker elke kaart die is toegevoegd aan de Task Tracker die op een specifiek gegevensknooppunt draait.
  • Meerdere taakvolgers: Simpel gezegd, meerdere taakvolgers werken als slaven die de taak uitvoeren volgens de instructie van de Job Tracker. Een taaktracker wordt geïmplementeerd op elk knooppunt afzonderlijk in het cluster dat de taken Map en Reduce uitvoert.

Het werkt omdat een taak wordt verdeeld in verschillende taken die op verschillende gegevensknooppunten van een cluster worden uitgevoerd. De Job Tracker is verantwoordelijk voor het coördineren van de taak door de taken te plannen en uit te voeren op meerdere gegevensknooppunten. Vervolgens voert de Task Tracker, die op elk gegevensknooppunt zit, delen van de taak uit en zorgt voor elke taak.

Verder sturen de Task Trackers voortgangsrapporten naar de jobtracker. Ook stuurt de Task Tracker periodiek een “hartslag”-signaal naar de Job Tracker en informeert hen over de systeemstatus. In geval van een storing is een jobtracker in staat om de job opnieuw in te plannen op een andere taaktracker.

Uitvoerfase: wanneer u deze fase bereikt, worden de laatste sleutel-waardeparen gegenereerd door de Reducer. U kunt een uitvoerformatter gebruiken om de sleutel-waardeparen te vertalen en ze naar een bestand te schrijven met behulp van een recordschrijver.

Waarom MapReduce gebruiken?

Hier zijn enkele van de voordelen van MapReduce, waarin de redenen worden uitgelegd waarom u het in uw big data-toepassingen moet gebruiken:

Parallelle verwerking

Je kunt een job in verschillende nodes verdelen waarbij elke node tegelijkertijd een deel van deze job in MapReduce afhandelt. Dus het opdelen van grotere taken in kleinere vermindert de complexiteit. Aangezien verschillende taken parallel op verschillende machines worden uitgevoerd in plaats van op één enkele machine, kost het bovendien aanzienlijk minder tijd om de gegevens te verwerken.

Gegevenslocatie

In MapReduce kunt u de verwerkingseenheid naar gegevens verplaatsen, niet andersom.

Op traditionele wijze werden de gegevens voor verwerking naar de verwerkingseenheid gebracht. Met de snelle groei van gegevens begon dit proces echter voor veel uitdagingen te zorgen. Sommige daarvan waren duurder, tijdrovender, belastend voor het hoofdknooppunt, frequente storingen en verminderde netwerkprestaties.

Maar MapReduce helpt deze problemen te overwinnen door een omgekeerde benadering te volgen: een verwerkingseenheid naar gegevens brengen. Op deze manier worden de gegevens verdeeld over verschillende knooppunten waarbij elk knooppunt een deel van de opgeslagen gegevens kan verwerken.

Als gevolg hiervan biedt het kosteneffectiviteit en verkort het de verwerkingstijd, omdat elk knooppunt parallel werkt met het bijbehorende gegevensdeel. Bovendien, aangezien elke node een deel van deze data verwerkt, zal geen enkele node overbelast raken.

Veiligheid

Het MapReduce-model biedt een hogere veiligheid. Het helpt uw ​​toepassing te beschermen tegen ongeautoriseerde gegevens en verbetert tegelijkertijd de clusterbeveiliging.

  Wat is root cause analyse? [+3 Template Resources]

Schaalbaarheid en flexibiliteit

MapReduce is een zeer schaalbaar framework. Het stelt je in staat om applicaties uit te voeren vanaf verschillende machines, gebruikmakend van data met duizenden terabytes. Het biedt ook de flexibiliteit om gegevens te verwerken die gestructureerd, semi-gestructureerd of ongestructureerd kunnen zijn en van elk formaat of formaat.

Eenvoud

U kunt MapReduce-programma’s in elke programmeertaal schrijven, zoals Java, R, Perl, Python en meer. Daarom is het voor iedereen gemakkelijk om programma’s te leren en te schrijven en tegelijkertijd te zorgen dat aan hun gegevensverwerkingsvereisten wordt voldaan.

Gebruik Cases van MapReduce

  • Full-text indexering: MapReduce wordt gebruikt om full-text indexering uit te voeren. De Mapper kan elk woord of elke zin in een enkel document in kaart brengen. En de Reducer wordt gebruikt om alle toegewezen elementen naar een index te schrijven.
  • Berekenen van de Pagerank: Google gebruikt MapReduce voor het berekenen van de Pagerank.
  • Loganalyse: MapReduce kan logbestanden analyseren. Het kan een groot logbestand opsplitsen in verschillende delen of splitsingen terwijl de mapper zoekt naar geopende webpagina’s.

Een sleutel/waarde-paar wordt naar de reducer gestuurd als er een webpagina in het logboek wordt gevonden. Hier is de webpagina de sleutel en de index “1” de waarde. Nadat een sleutel-waardepaar aan de Reducer is gegeven, worden verschillende webpagina’s samengevoegd. De uiteindelijke output is het totale aantal hits voor elke webpagina.

  • Reverse Web-Link Graph: Het raamwerk vindt ook gebruik in Reverse Web-Link Graph. Hier levert de Map() het URL-doel en de bron op en neemt de invoer van de bron of webpagina.

Vervolgens verzamelt Reduce() de lijst van elke bron-URL die is gekoppeld aan de doel-URL. Ten slotte geeft het de bronnen en het doel weer.

  • Woorden tellen: MapReduce wordt gebruikt om te tellen hoe vaak een woord in een bepaald document voorkomt.
  • Opwarming van de aarde: organisaties, overheden en bedrijven kunnen MapReduce gebruiken om problemen met de opwarming van de aarde op te lossen.

U wilt bijvoorbeeld meer weten over het verhoogde temperatuurniveau van de oceaan als gevolg van de opwarming van de aarde. Hiervoor kunt u duizenden gegevens over de hele wereld verzamelen. De gegevens kunnen hoge temperatuur, lage temperatuur, breedtegraad, lengtegraad, datum, tijd, enz. zijn. Dit vereist verschillende kaarten en vermindert het aantal taken om de uitvoer te berekenen met behulp van MapReduce.

  • Geneesmiddelproeven: Traditioneel werkten datawetenschappers en wiskundigen samen om een ​​nieuw medicijn te formuleren dat een ziekte kan bestrijden. Met de verspreiding van algoritmen en MapReduce kunnen IT-afdelingen in organisaties eenvoudig problemen aanpakken die alleen door Supercomputers, Ph.D. wetenschappers, enz. Nu kun je de effectiviteit van een medicijn voor een groep patiënten inspecteren.
  • Andere toepassingen: MapReduce kan zelfs grootschalige gegevens verwerken die anders niet in een relationele database zouden passen. Het maakt ook gebruik van datawetenschapstools en maakt het mogelijk deze over verschillende, gedistribueerde datasets uit te voeren, wat voorheen alleen mogelijk was op een enkele computer.

Als gevolg van de robuustheid en eenvoud van MapReduce vindt het toepassingen in het leger, het bedrijfsleven, de wetenschap, enz.

Conclusie

MapReduce kan een technologische doorbraak blijken te zijn. Het is niet alleen een sneller en eenvoudiger proces, maar ook kostenefficiënt en minder tijdrovend. Gezien de voordelen en het toenemende gebruik, zal het waarschijnlijk een hogere acceptatie krijgen in alle sectoren en organisaties.

U kunt ook enkele beste bronnen verkennen om Big Data en Hadoop te leren kennen.

gerelateerde berichten