Geek Dirt

Dub 24, 2021

v prvním příspěvku Hadoop série představení Hadoop a spuštění programu map-reduce jsem vysvětlil základy Map-Reduce. V tomto příspěvku vysvětluji jeho různé komponenty, jako je rozdělení, Shuffle, slučovač, sloučení, třídění nejprve a poté, jak to funguje.

rozdělení:

pokud je počet reduktorů 2 a hašovací funkce je:

#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}

pak pro klíč 1:

partition number = hash(1) % 2 = 1;

pro klíč 2:

partition number = hash(2) % 2 = 0;

pro klíč 4:

partition number = hash(4) % 2 = 0;

to znamená, že výstup pro klíč 1 by šel v partition_1 a výstup pro klíč 2 a 4 by šel v partition_0.

Shuffle:

v konečném výstupu mapové úlohy může být více oddílů a tyto oddíly by měly jít do různých redukčních úloh. Shuffling je v podstatě přenos výstupních oddílů mapy na odpovídající redukční úkoly. Map task notified application master o dokončení mapového úkolu a application master oznámí příslušnému reduktoru, aby zkopíroval výstup mapy do redukčního stroje.

slučovač:

třídění:

jedná se pouze o třídění dat na základě klíčů.

sloučení:

to se děje na straně reduktoru. Reduktor může získat data z více mapových úkolů a sloučením sloučí data různých mapových úkolů do jedné jednotky a udržuje pořadí třídění.

mapa-detail redukce:

mapa:

má in paměť circular buffer a zapisuje přímo do vyrovnávací paměti. Když vyrovnávací paměť dosáhne prahové hodnoty (výchozí 80%), začne zapisovat na spill file prostřednictvím samostatného background thread. Mapa úkol může stále psát, že je výstup do vyrovnávací paměti, zatímco pozadí vlákno je spuštěno. Před zápisem do spill souboru, mapa výstup, který je klíč-hodnota párů jsou rozděleny a tříděny. Je-li slučovač je tam, to také dostane běh, který snižuje velikost výstupu.

po úkolu jsou všechny spill soubory znovu tříděny a je vytvořen jeden soubor, který je rozdělen a tříděn. Znamená to, že tento konečný výstupní soubor má více oddílů. Po dokončení úlohy mapy pro uzel je jeho výstup odeslán do reduktoru. To je důvod, proč vidíte snížit úkol více než 0%, zatímco mapa je menší než < 100%.

pokud máte úkol pouze pro mapu, nedochází k žádnému míchání, což znamená, že mappeři zapíší konečný výstup přímo do HDFS.

snížit:

po získání dat z úlohy mapy sloučí data do jedné jednotky během merge phase. Namísto přímého sloučení všech souborů do jednoho používá koncept merge factor , jehož účelem je minimalizovat množství dat zapsaných na disk. Pak se během redukční fáze vyvolá funkce reduce pro každý klíč v tříděném výstupu. Výstup této fáze se zapisuje přímo do výstupního souborového systému, typicky HDFS.

užitečné odkazy:

úvod a zpracování příze

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.