close

MapReduce

Ugrás a navigációhoz Ugrás a kereséshez

A MapReduce  a Google által bevezetett elosztott számítási modell, amelyet nagyon nagy, akár több petabájtos [1] adathalmazok párhuzamos számításaira használnak számítógép- fürtökben .

Áttekintés

A MapReduce egy keretrendszer elosztott feladatok bizonyos halmazainak kiszámítására, nagyszámú számítógép (úgynevezett "csomópont") segítségével, amelyek egy fürtöt alkotnak .

A MapReduce munkája két lépésből áll: Map és Reduce, amelyek az azonos nevű magasabb rendű függvények, a map és a redukció után kapták a nevét .

A Térkép lépés előfeldolgozza a bemeneti adatokat. Ehhez az egyik számítógép (amelyet főcsomópontnak - főcsomópontnak neveznek) fogadja a feladat bemeneti adatait, azokat részekre bontja és átadja más számítógépeknek (worker node - worker node) előfeldolgozásra.

A redukciós lépésben az előfeldolgozott adatok csökkennek. A fő csomópont válaszokat kap a dolgozó csomópontoktól, és ezek alapján eredményt generál - megoldást az eredetileg megfogalmazott problémára.

A MapReduce előnye, hogy lehetővé teszi az előfeldolgozási és redukciós műveletek elosztott módon történő végrehajtását. Az előfeldolgozási műveletek egymástól függetlenül működnek, és párhuzamosan is végrehajthatók (bár a gyakorlatban ennek a bemeneti forrás és/vagy a felhasznált processzorok száma korlátozza). Hasonlóképpen, több dolgozó csomópont is végezhet összegzést – ehhez csak az szükséges, hogy az összes előfeldolgozási eredményt egy adott kulcsértékkel egyszerre egy worker csomópont dolgozza fel. Bár ez a folyamat kevésbé hatékony, mint a több szekvenciális algoritmus, a MapReduce alkalmazható nagy mennyiségű adatra, amelyet számos szerver képes feldolgozni. Például a MapReduce néhány óra alatt egy petabájtnyi adat rendezésére használható. A párhuzamosság némi helyreállítást is biztosít a részleges szerverhibákból: ha egy előfeldolgozási vagy redukciós műveletet végrehajtó worker csomópont meghibásodik, akkor a munkája átvihető egy másik worker csomópontra (feltéve, hogy a végrehajtandó művelet bemeneti adatai rendelkezésre állnak).

A keretrendszer nagymértékben a funkcionális programozásban széles körben használt térkép- és redukciós függvényeken alapul [ 2 ] , bár a keretrendszer tényleges szemantikája eltér a prototípusétól [3] .

Példa

A MapReduce segítségével írt alkalmazás kanonikus példája az a folyamat, amely megszámolja, hányszor fordulnak elő különböző szavak egy dokumentumkészletben:

// A munkavégző csomópontok által a Leképezés lépésben használt függvény 
// kulcs-érték párok feldolgozásához a bemeneti adatfolyam 
void map -ból ( Karakterlánc neve , Karakterlánc dokumentum ) :    
    // Bemeneti adatok: 
// név - dokumentum neve // ​​dokumentum - dokumentum tartalma minden egyes szóhoz a dokumentumban :    
    
        
        EmitIntermediate ( szó , "1" ); 
 
// A worker csomópontok által a Reduce lépésben használt függvény 
// a leképezési lépésben kapott kulcs-érték párok feldolgozásához 
void redukció ( Iterator partialCounts ) :  
    // Bemeneti adatok: 
// partialCounts - a csoportosított köztes eredmények listája. A partialCounts bejegyzéseinek száma // a szükséges érték int result = 0 ;    
    
       
    minden v - re partialCounts - ban :    
        eredmény += parseInt ( v );  
    Emit ( AsString ( eredmény ));

Ebben a kódban a Térkép lépésben minden dokumentumot szavakra bont, és párokat ad vissza, ahol a kulcs maga a szó, az érték pedig "1". Ha ugyanaz a szó többször előfordul egy dokumentumban, akkor ennek a dokumentumnak az előzetes feldolgozása eredményeként ezekből a párokból annyi lesz, ahányszor ez a szó előfordul. A generált párokat további feldolgozásra küldi, a rendszer kulcsonként csoportosítja (jelen esetben a kulcs maga a szó), és szétosztja több processzor között. A csoportban azonos kulcsú objektumok halmazai a redukciós függvény bemenetére jutnak, amely feldolgozza az adatfolyamot, csökkentve annak mennyiségét. Ebben a példában a redukciós függvény egyszerűen összeadja egy adott szó előfordulásait a teljes folyamon, és az eredményt - csak egy összeget - továbbküldi kimenetként.

Jegyzetek

  1. ↑ A Google reflektorfénybe állítja az adatközpont belső működését | Tech news blog - CNET News.com (downlink) . Letöltve: 2008. szeptember 27. Az eredetiből archiválva : 2013. október 19.. 
  2. "Absztrakciónkat a térkép ihlette, és csökkenti a Lispben és sok más funkcionális nyelvben előforduló primitíveket." - "MapReduce: Simplified Data Processing on Large Clusters" archiválva : 2017. december 11. a Wayback Machine -nél , Jeffrey Dean és Sanjay Ghemawat; a Google Labs szolgáltatásból
  3. „A Google MapReduce programozási modellje – újralátogatva” archiválva 2015. április 23-án a Wayback Machine -nél  – Ralph Lemmel , a Microsoft cikke

Linkek