MapReduce je programovací model a na něj navázaná implementace procesů a generování big data datových sad s paralelním distribuovaným algoritmem na klustru.
MapReduce program se skládá z mapovacích metod, které provádějí filtrování a řazení a reduce metod, které provádějí shrnující operace (jako například součet řádků, frekvence různých opakujících se znaků). MapReduce systém, často označovaný také jako infrastruktura nebo architektura, koordinuje zpracování tím, že řídí distribuované servery, které spouští různé úlohy paralelně, spravuje veškerou komunikaci a datové přenosy mezi různými částmi systému a zajišťuje konzistenci v případě selhání některého serveru.
Model je podskupinou strategie split-apply-combine pro datovou analýzu. Je inspirován funkcemi map a reduce, které jsou běžně používané ve funkcionálním programování. Jejich účel ve Frameworku MapReduce však není stejný jako v jejich původní podobě. Klíčovým přínosem MapReduce Frameworku nejsou samotné funkce map a reduce, ale škálovatelnost a tolerance k chybě, kterou dokáže zajistit pro různé aplikace optimalizací spuštění.
Jednovláknová implementace MapReduce obvykle nebude rychlejší, nežli tradiční implementace, k výraznému zlepšení dochází až v případě vícevláknových implementací za využití víceprocesorového hardware. Použití tohoto modelu je výhodné pouze když se zapojí optimalizovaná distribuovaná shuffle operace, která snižuje náklady na síťovou komunikaci, a vlastnosti odolnosti vůči chybám. Pro dobrý MapReduce algoritmus musí optimalizovat komunikační náklady.
MapReduce knihovny jsou psány v různých programovacích jazycích s různou úrovní optimalizace. Populární open-sourcovou implementací, která podporuje distribuované shuffle operace je Apache Hadoop.
MapReduce pracuje s klusterem databázových nebo jiných serverů. Jeden ze serverů následně přijme požadavek od klienta. Tento uzel rozesílá Map funkci nebo řetězec funkcí ostatním uzlům patřícím do daného klustru. Ostatní uzly kód této funkce provedou a vrátí původnímu uzlu výsledky. Ty mohou být často i duplicitní, což je chtěná vlastnost, která má bránit ztrátě dat v případě výpadku. Původní uzel funkci může sám rovněž zpracovat.
Ve chvíli, kdy má pak dostatek výsledků od ostatních uzlů i sám od sebe, nebo v případě vypršení stanoveného časového limitu pro odpověď od ostatních uzlů provede původní uzel nad získanou množinou dat funkci reduce. Tato fáze odstraní duplicity a provede operace, které lze provádět jen v případě, že je množina kompletním výsledkem od všech uzlů. Na konci této fáze je následně možné vrátit klientovi výsledek.
MapReduce lze použít na příklad při mapování frekvence přístupů na webové stránky. Mapovací funkce sesbírává log požadavků na stránky, kdy je výstupem dvojice URL a jedničky. Redukční funkce pak pro každý z klíčů sečte hodnoty a výstupem následně je kombinace URL a celkového počtu.