MapReduce

April 6, 2016 Meta Marum M 0 1
FONT SIZE:
fontsize_dec
fontsize_inc

MapReduce is een programmeertaal model dat wordt gebruikt door Google om parallel computing op grote datasets ondersteunen in groepen van de commodity computers en informatica. De naam van het kader is geïnspireerd op de namen van de twee belangrijke methoden, macro's of functies in functioneel programmeren: een kaart en verkleinen. MapReduce is wereldwijd vastgesteld, aangezien er een inzet OpenSource genoemd Hadoop. De ontwikkeling werd aanvankelijk geleid door Yahoo en maakt momenteel de Apache-project. In het decennium van de 2010s zijn er diverse soortgelijke initiatieven om Hadoop in zowel de industrie en de academische wereld. Ze hebben geschreven implementaties van MapReduce bibliotheken in verschillende programmeertalen zoals C ++, Java en Python.

MapReduce wordt in de praktijk gebruikt sommige algoritmen resolutie die kan worden parallelized. Maar MapReduce is niet de oplossing voor elk probleem op dezelfde manier dat geen probleem efficiënt kunnen worden opgelost door MapReduce. Over het algemeen problemen worden aangepakt met grote datasets, het bereiken van petabytes grootte. Het is om deze reden dat dit kader wordt meestal uitgevoerd op gedistribueerd bestandssysteem.

Geschiedenis

De eerste implementaties van Google nodig om vermenigvuldiging van grote matrices te berekenen PageRank uit te voeren, dat wil zeggen, de indeling van de pagina's in een zoekopdracht. Zo werd populair MapReduce als een methode voor het berekenen van de lineaire algebra. Zorg voor het behandelen van grote verzamelingen van gegevens, geleid tot de oprichting van de algoritmen en frameworks staat om terabytes aan informatie te verwerken. Een van de eerste toepassingen die kunnen programma werd voor het eerst uitgevoerd in Hadoop MapReduce, oorspronkelijk ontworpen door Doug Cutting, die zo door de olifant speelgoed voor uw kind genaamd. Het werd oorspronkelijk ontwikkeld om de distributie van ontwerp Nutch zoekmachine ondersteunen.

Concept

Niet alle processen kunnen worden benaderd vanuit het MapReduce framework. Concreet zijn ze alleen degenen die kunnen desintegreren in de activiteiten en vermindert kaart betaalbaar en dit is belangrijk als het gaat om dit kader om een ​​probleem op te lossen te kiezen. De kaart en het verkleinen functies worden gedefinieerd, zowel met betrekking tot gestructureerde data type tupels.

Functie Kaart

Kaart neemt een van deze paren van gegevens met een man in een data domein, en geeft een lijst van paren in een ander domein:

  • De kaart-functie zorgt voor de mapping en wordt toegepast in parallel aan elk item in de input. Dit levert een lijst met paren per gesprek. Daarna MapReduce het kader waarin alle paren met dezelfde sleutel voor alle lijsten en groepen, waardoor een groep voor elk van de verschillende gegenereerde sleutels. Vanuit het architectonisch oogpunt de master knooppunt neemt de input, verdeelt het in kleine stukjes of minder identiteit kwesties en distribueert zogenaamde werknemer knooppunten. Een werknemer knooppunt kan weer onderverdeeld, resulterend in een boomstructuur. De werknemer knooppunt verwerkt het probleem en gaat de reactie op het hoofdknooppunt.

Verminder functie

Verminderde functie wordt toegepast in parallel per groep, produceert een verzameling van waarden voor elk domein:

  • De functie vermindert: elke oproep tot Verminder v3 levert meestal een waarde of een lege oproep, maar een oproep kan meer dan één waarde terug te keren. De terugkeer van al die gesprekken wordt verzameld als de lijst van gewenste resultaat.

Daarom is de MapReduce kader transformeert een lijst van paren in een lijst met waarden. Dit gedrag is anders dan de combinatie "kaart en verminderen" functioneel programmeren, dat een willekeurige zoeklijst accepteert en retourneert één waarde waarbij alle geretourneerd door kaartwaarden combineert.

MapReduce architectuur

De kaart functie wordt uitgevoerd verdeeld over meerdere machines. De input data, meestal van een groot bestand is verdeeld in een reeks van M-ingang partities meestal 16 megabyte. Deze partities kan worden verwerkt op verschillende machines. In een beroep op MapReduce verschillende activiteiten plaatsvinden:

  • We gaan naar de vermeldingen in M ​​partities grootte van 64 MB bij benadering te verdelen. Het MapReduce programma begint om de verschillende machines in het cluster instantiëren. In het algemeen is het aantal instances geconfigureerd in de toepassing.
  • Een kopie van het programma is speciaal en neemt de rol van "leraar". De resterende kopieën worden aangeduid als "werknemers" en ontvang de verdeling van de taken van de meester. Geoordeeld wordt dat er een aantal van M kaart taken en R te verminderen. De "master" is verantwoordelijk voor het verzamelen van "werknemers" in rust en een specifieke taak in kaart of verminderd toegewezen. Een werknemer mag slechts drie staten: rust, volledig werken.
  • Een werknemer die een bepaalde taak toegewezen neemt als invoer map die overeenkomt met de partitie. Het zal worden gewijd aan het paar ontleden naar een nieuwe partner uitvoer te maken, zoals aangegeven door de programmering. De sleutel en waardeparen door de functiekaart wordt opgeslagen in een buffer.
  • Periodiek, de sleutelwaarde paren opgeslagen in de buffer geschreven naar de lokale schijf, verdeeld R's. De regio's van deze key-waarde paren worden doorgegeven aan de master, die verantwoordelijk is voor het omleiden van de "werknemers" die verlaagde rechten hebben.
  • Wanneer een verlaagd tarief werknemer in kennis wordt gesteld door de "master" met de locatie van een partitie, gebruikt remote oproepen naar de informatie die is opgeslagen op de harde schijven van verschillende werknemers van het type kaart te lezen. wanneer een werknemer vermindert soort leest alle tussenliggende data, command toetsen zodat de gegevens gevonden om dezelfde sleutel bezitten is gegroepeerd. De opstelling is noodzakelijk omdat in de regel veel andere kaart functietoetsen worden teruggebracht tot een enkele functie. In die gevallen waarin de hoeveelheid tussengegevens zijn zeer groot, meestal met behulp van een extern systeem.
  • Het type vermindert werknemer itereert over de set van bestelde tussenliggende waarden, en doet dat voor elk van de unieke sleutels gevonden. Neem de sleutel en de set van waarden die ermee verbonden zijn en gaat de functie gereduceerd. De beperkte productie wordt aan de uitgang van MapReduce.
  • Wanneer alle kaart en het verminderen van taken zijn voltooid, de "master" aan de gebruiker programma. Op dit punt de MapReduce gesprek terug te controleren om de gebruiker code.

Het wordt beschouwd een einde van taken zijn bij de controle wordt teruggegeven aan de gebruiker. De uitgangen ditribuyen een volledig dossier of anderszins verspreid over R-bestanden. Deze R-bestanden kan de ingang van een ander MapReduce of kan worden verwerkt door een ander programma dat deze informatie nodig heeft.

Combiner

In een clustering omgeving, een van de beperkingen is om grote bestanden tussen computers transporteren vanwege hun beperkte bandbreedte. In het kader MapReduce kaart functie schrijft een buffer lokale, zoals een harde schijf. De informatie die u typt wordt lokaal toegevoegd en bevolen door een aggregator functie die verantwoordelijk is voor deze operatie. De waarden worden gesorteerd in de weg ..., vn]]. Zo vermindert de functie ontvangt een lijst met waarden die met een unieke sleutel van de combiner. Omdat het computernetwerk latency en de schijven meestal hoger dan alle handelingen, zal elke vermindering van de hoeveelheid tussengegevens de efficiëntie van algoritmen te verhogen. In MapReduce, elke lokale aggregatie van de tussentijdse resultaten leiden tot een echte verbetering van de algehele efficiëntie.

Het is om deze reden dat veel officiële ditribuciones MapReduce bevatten vaak geaggregeerde operaties ter plaatse, met behulp van de functies staat het toevoegen van gegevens lokaal. Het vermijden of verminderen zo weinig mogelijk verplaatsing van grote bestanden. Of toegevoegd aan de kaart functies of lokale aggregators.

Fault Tolerance

Het mechanisme van MapReduce is fouttolerante wanneer een van de arbeiders wordt onderworpen aan een storing. Zoals MapReduce is voor processen die betrokken zijn grote gegevensafmetingen met honderden of duizenden computers. Zelfs als de lage kans op falen, is het waarschijnlijk dat een van de werknemers blijven gedeactiveerd precies machine storing die steun gaf. De "master" periodiek pings elke werknemer om hun status te controleren.

Als er geen respons na een bepaalde tijd wachten, de meester interpreteert de werknemer uitgeschakeld. Elke kaart taak is voltooid door de werknemer onmiddellijk terug naar zijn stand-by staat, en daarom kunnen in aanmerking komen voor toewijzing aan andere werknemers. Ook enkele kaart functie die aan de gang is in de crash, wordt teruggezet naar stationair kan worden gekozen voor de nieuwe overplaatsing.

Voltooide kaart taken worden weer opnieuw uit te voeren om een ​​storing in een deel omdat de productie wordt opgeslagen op de lokale schijven van de machine die is mislukt, en daarom ontoegankelijk beschouwd. Vermindert volledige taken weer niet nodig opnieuw worden uitgevoerd, omdat de uitvoer wordt opgeslagen in het globale systeem. wanneer de taak van het runnen van de kaart voor werknemer A en vervolgens een werknemer B, in dit geval reduceert alle taken worden gemeld aan de gegevens van de werknemer te verwijderen om de werknemer en te accepteren B. Op deze manier MapReduce is ejecucción veerkrachtig.

Voorbeelden

In de beschrijving van de voorbeelden van het gebruik van MapReduce hoeft alleen in detail de activiteiten van de kaart en vermindering telkens worden uitgevoerd. Uit de literatuur blijkt herhaalde voorbeelden van het tellen van woorden in een document, van matrix operaties en querybewerkingen relationele databases.

Woorden tellen

Dit voorbeeld van MapReduce is een proces om de gebeurtenissen van elk woord te tellen in een set van documenten:

De kaart-functie in dit geval een document verdeeld in woorden met behulp van een eenvoudige lexicale analyzer, en stoot een reeks tupels van de FOMA waar de sleutel is het woord en de waarde "1". Dat wil zeggen, bijvoorbeeld van "Little House on the Prairie" functie zou de kaart terug te keren:, ,,,.

Hier wordt elk document verdeeld in woorden, en elk woord geteld beginwaarde "1" door de Kaartfunctie, het woord als belangrijk resultaat. Het raamwerk brengt alle paren met dezelfde sleutel en toegevoerd aan hetzelfde gesprek verkleinen derhalve deze functie heeft slechts de som van alle waarden van toegang tot het totale aantal keren dat het woord vinden. Verschijnt tweemaal omdat de "a" heeft twee gebeurtenissen in het bovenstaande voorbeeld, de andere toets slechts één keer verschijnt.

Vermenigvuldiging van een matrix met een vector

Voorbeelden van lineaire algebra matrix operaties meest geschikt zijn voor idonidad het kader dergelijke gevallen. Stel je hebt een vierkante matrix M van grootte nxn. Het element gelegen op rij i en kolom j mij hem te bellen. Stel dat we een vector v zodanig dat in de positie j het element vj. Dus het resultaat van de vermenigvuldiging van de matrix M en de vector v is een vector x van lengte n, zodanig dat het element xi zodanig is dat:

Deze bewerking wordt uitgevoerd zonder enig probleem reeksen van enkele duizenden elementen, heel duur tot enkele miljoenen. Het probleem komt wanneer de computer is om honderden miljarden te maken. Het is om deze reden dat aangenomen wordt bij de uitvoering van MapReduce dat n ongeveer 10. De functie map vindt in dit geval een rij i van de matrix en voltooi de vector v te spannen. Dat is de manier ,, ....

De functie vermindert in dit geval gewoon verzamelen paren met dezelfde sleutel voeg ik hen.

Datastroom

De MapReduce kader is een belangrijke algoritme gedistribueerd systeem. De belangrijkste toepassing modules worden gedefinieerd:

  • Een lezer ingang
  • Een Kaart functie
  • Een partitie functie
  • Een vergelijking functie
  • Een Verminder functie
  • Uitgang schrijver

Reader-ingang

De vermelding lezer verdeelt de inwerkingtreding 'afdelingen' van de juiste grootte en een divisie kader wijst elke Kaart functie. De lezer leest de gegevens input van stabiele opslag en genereert paren sleutel / waarde.

Een veelvoorkomend voorbeeld las een map vol tekstbestanden en zal elke regel terugkeren als een record.

Functie Kaart

Kaart functie neemt een reeks van sleutel / waarde paren, processen en genereert nul of meer paren sleutel / output waarde. De soorten input en output kaarten verschillend.

Als de aanvraag wordt het uitvoeren van het aantal woorden, zal de kaart te starten lijnen in woorden en het genereren van een sleutel / waarde van de output voor elk woord paar. Elk paar van de output zal het woord als sleutel en het aantal exemplaren van hetzelfde op de lijn als waarde bevatten.

Partitie-functie

Elke uitgang van de Map functie is toegewezen aan een verloopstuk door de partitie functie om versnippering te genereren. De verdelingsfunctie ontvangt de sleutel en het kleinere aantal en retourneert de index van de gewenste versnelling.

Het standaard gedrag is om de hekje-toets te krijgen en gebruik de hash modulo het aantal verloopstukken. Het is belangrijk om een ​​verdelingsfunctie kiezen om een ​​ongeveer gelijkmatige verdeling van fragmentgegevens evenwicht genereren anders de MapReduce werking kan vertragen wachten reduceren langzame karton.

Onder de stappen van het in kaart brengen en datareductie worden geschud om gegevens uit het fragment waar ze werden geproduceerd om de passage waarin wordt verminderd bewegen. Het schudden kan in sommige gevallen langer duren dan de behandeling afhankelijk van de bandbreedte, CPU snelheden data geproduceerd en geconsumeerd binnen de verwerkingstijd mapping en reductie.

Vergelijking Functie

De vermelding voor elke reductie wordt verkregen uit de machine, waar je liep Kaart en besteld via de vergelijking functie

Reduction-functie

Het kader roept de functie Reduction applicatie eenmaal voor elke unieke sleutel in de gesorteerde lijst. Reductie itereren tussen de waarden die worden geassocieerd met die sleutel en produceren nul of meer outputs.

In het voorbeeld van het aantal woorden, de reductie functie neemt de input waarden, de som en genereert een uitgang voor het woord en het uiteindelijke bedrag.

Uitgang schrijver

De schrijver schrijft de output Output Reduction functie opslag tafels, meestal een gedistribueerd bestandssysteem.

Toepassingen

MapReduce wordt algemeen gebruikt in die Concurrent Computerproblemen waaronder grote datasets zijn betrokken die procesandos door een groot aantal computers, die collectief verwezen als clusters of roosters moeten zijn. Parallelle verwerking kan optreden bij het gebruik van gegevens opgeslagen in beide bestandssysteem of in een database. Het is om deze reden dat het wordt gebruikt in toepassingen die grote data, zoals parallelle aanvragen, web indexeren, data mining en wetenschappelijke simulatie heeft.

Zie ook

MapReduce implementaties

  • Apache Hadoop
  • Couchdb
  • Infinispan
  • MongoDB
  • Riak
(0)
(0)
Vorige artikel Kathryn Beaumont
Volgende artikel Animanaturalis

Gerelateerde Artikelen

Commentaren - 0

Geen reacties

Voeg een Commentaar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tekens over: 3000
captcha