a Hadoop sorozat első bejegyzésében a Hadoop bevezetése és a map-reduce program futtatása során elmagyaráztam a Map-Reduce alapjait. Ebben a bejegyzésben elmagyarázom a különböző összetevőket, például a particionálást, a keverést, a kombinálást, az egyesítést, az első rendezést, majd a működését.
particionálás:
ha a reduktorok száma 2 és a hash függvény:
#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}
ezután az 1. kulcshoz:
partíció száma = hash(1) % 2 = 1;
a kulcs 2:
partíció száma = hash(2) % 2 = 0;
a 4. kulcshoz:
partíció száma = hash(4) % 2 = 0;
ez azt jelenti, hogy az 1. kulcs kimenete a partition_1, a 2.és 4. kulcs kimenete pedig a partition_0.
Shuffle:
a leképezési feladat végső kimenetében több partíció is lehet, és ezeknek a partícióknak különböző csökkentési feladatokra kell menniük. A keverés alapvetően a térkép kimeneti partícióinak átvitelét jelenti a megfelelő csökkentési feladatokhoz. Map task notified application master a map task befejezéséről, az application master pedig értesíti a megfelelő szűkítőt, hogy másolja a térkép kimenetét a reduce machine-be.
kombináló:
Válogatás:
ez csak válogatás az adatok alapján kulcsokat.
összevonás:
ez a reduktor oldalán történik. A Reducer több térképfeladatból kaphat adatokat, és összevonásával egyesíti a különböző térképfeladatok adatait egyetlen egységben, fenntartva a rendezési sorrendet.
térkép-részletesen csökkentse:
Térkép:
memóriája circular buffer
és közvetlenül a bufferbe ír. Amikor a buffer eléri a küszöbértéket (alapértelmezett 80%), akkor a spill file
– ra kezd írni egy külön background thread
– on keresztül. Térkép feladat is írni, hogy a kimenet puffer, míg a háttér szál fut. Írás előtt, hogy öntsön fájlt, térkép kimenet, amely kulcs-érték párok particionált és rendezve. Ha van egy kombináló, akkor az is fut, ami csökkenti a kimeneti méretet.
a feladat után az összes kiömlő fájl újra rendezésre kerül, és egyetlen fájl jön létre, amelyet particionálnak és rendeznek. Azt jelenti, hogy ez a végső kimeneti fájl több partícióval rendelkezik. Miután map feladat befejeződött egy csomópont kimenete küldött szűkítő. Ezért látja a tevékenység csökkentése 0% – nál nagyobb értéket, míg a leképezés kevesebb, mint <100%.
ha csak térképes feladatod van, akkor egyáltalán nincs keverés, ami azt jelenti, hogy a mapperek a végső kimenetet közvetlenül a HDFS-re írják.
csökkentés:
miután megkapta az adatokat a térkép feladatból, az adatokat egyetlen egységbe egyesíti a merge phase
alatt. Ahelyett, hogy az összes fájlt közvetlenül egyesítené, a koncepciót használja merge factor
, amelynek célja a lemezre írt adatok mennyiségének minimalizálása. Ezután a reduce fázis alatt a reduce függvény a rendezett kimenet minden kulcsához meghívásra kerül. Ennek a fázisnak a kimenete közvetlenül a kimeneti fájlrendszerbe van írva, jellemzően HDFS.
hasznos linkek:
a fonal bemutatása és megmunkálása