MapReduce: Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
init
 
Funkce návrhy odkazů: Přidány 3 odkazy.
 
(Není zobrazeno 32 mezilehlých verzí od 29 dalších uživatelů.)
Řádek 1: Řádek 1:
'''MapReduce''' je programovací model pro zpracování a generování velkých množin dat, vyvinutý společností [[Google]] pro návrhy paralelně zpracovávaných úloh, a současně knihovna v jazyce [[Cplusplus|C++]], která jej implementuje.
'''MapReduce''' (někdy též '''Map/Reduce''' nebo '''MapRed''') je programovací model pro zpracování velkých množin dat pomocí [[paralelismus|paralelního]] zpracování, a současně [[Knihovna (programování)|knihovna]] v jazyce [[C++]], která jej implementuje.

__NOTOC__ <!--prťavé...-->


== Princip ==
== Princip ==
{{upravit část|doplnit, reduce se dělá i distribuovaně}}
Uživatel definuje funkci <code>map</code> (mapování), která s dvojic (klíč, hodnota) vygeneruje pracovní dvojice (klíč2, hodnota2), a funkci <code>reduce</code> (redukce), která spojí všechny hodnoty v pracovních datech, které mají stejný klíč.
* Mějme cluster databázových nebo jiných serverů
* Jeden ze serverů (říkejme mu master, ale v některých modelech to může být libovolný uzel z clusteru) přijme požadavek ''Map/Reduce'' od klienta.
* Uzel master rozešle funkci ''Map'' (nebo více zřetězených funkcí) všem ostatním uzlům clusteru, ty provedou kód této funkce a vrátí masteru výsledky, které mohou být i duplicitní (více stejných výsledků z několika uzlů — to je žádoucí kvůli odolnosti proti výpadkům). Master může také zpracovat funkci ''Map'' a také to v některých implementacích dělá.
* V okamžiku, kdy má master dostatek výsledků z fáze ''Map'' od ostatních uzlů (a sám od sebe), nebo vyprší časový limit pro odpověď od těchto uzlů, provede master nad navrácenou množinou dat funkci ''Reduce''. Fáze ''Reduce'' odstraní duplicitní data a provede operace, které je možné provést jen v případě, že máme kompletní množinu výsledků ze všech uzlů.
* Na konci fáze ''Reduce'' je možné navrátit výsledek klientovi, který si tuto operaci zadal.

== Postup ==
Uživatel definuje [[funkce (programování)|funkci]] <code>map</code> (mapování), která z dvojic (klíč, hodnota) vygeneruje pracovní dvojice (klíč2, hodnota2), a funkci <code>reduce</code> (redukce), která spojí všechny hodnoty v pracovních [[data|datech]], které mají stejný klíč.


Je přitom podstatné, že všechny mapovací funkce mohou běžet nezávisle a své výsledky mohou přímo postupovat redukčním funkcím odpovědným za daný pracovní klíč. Zpracování takto popsané úlohy je tedy téměř lineárně paralelizovatelné.
Je přitom podstatné, že všechny mapovací funkce mohou běžet nezávisle a své výsledky mohou přímo postupovat redukčním funkcím odpovědným za daný pracovní klíč. Zpracování takto popsané úlohy je tedy téměř lineárně paralelizovatelné.


== Příklad ==
* Vyhledávač má cluster s redundantně replikovanou [[Databáze|databází]] textových dokumentů — např. replikace: ''AB'', ''BC'', ''CA''.
* Jeden z uzlů (master) dostane od klienta MR požadavek vrátit jména všech dokumentů obsahujících "ŘETĚZEC", číslo řádky a text celé řádky.
* <code>MAP()</code>: všechny uzly projdou všechny řádky ve všech dokumentech a vrátí je masteru v poli, kde index je jméno dokumentu a číslo řádky, daty je potom text této řádky.
* <code>REDUCE()</code>: master spojí všechna pole vrácené uzly, čímž odstraní (zredukuje) duplicitní indexy (a tím i duplicitní řádky).
* výsledky fáze ''Reduce'' je možné vrátit uživateli


== Příklady použití ==
== Příklady použití ==
; Frekvence přístupů na webové stránky
; Frekvence přístupů na webové stránky
: Mapovací funkce zpracovává log požadavků na stránky, výstupem jsou dvojice (URL, 1). Redukční funkce pro každý klíč sčítá hodnoty, výstupem jsou dvojice (URL, celkový počet).
: Mapovací funkce zpracovává log požadavků na stránky, výstupem jsou dvojice ([[Uniform Resource Locator|URL]], 1). Redukční funkce pro každý klíč sčítá hodnoty, výstupem jsou dvojice (URL, celkový počet).

; Graf zpětných odkazů
; Graf zpětných odkazů
: Mapovací funkce vydá (cíl, zdroj) pro každý odkaz na “cíl”, který nalezne v dokumentu “zdroj”. Redukční funkce hodnoty spojuje, takže výsledkem je množina dvojic (cíl, seznam zdrojů).
: Mapovací funkce vydá (cíl, zdroj) pro každý odkaz na “cíl”, který nalezne v dokumentu “zdroj”. Redukční funkce hodnoty spojuje, takže výsledkem je [[množina]] dvojic (cíl, seznam zdrojů).

; Zpětný index
; Zpětný index
: Mapovací funkce zpracuje každý dokument, výstupem je větší počet dvojic (IDslova, IDdokumentu). Redukční funkce seřadí všechny hodnoty pro daný klíč a vygeneruje dvojici (IDslova, seznam IDdokumentu).
: Mapovací funkce zpracuje každý dokument, výstupem je větší počet dvojic (IDslova, IDdokumentu). Redukční funkce seřadí všechny hodnoty pro daný klíč a vygeneruje dvojici (IDslova, seznam IDdokumentu).


== Vizte též ==
== Související články ==
* [[Google]]
* [[Google]]
* [[Google File System]]
* [[Google File System]]


== Externí odkazy ==
== Externí odkazy ==
* {{Commonscat}}
* [http://labs.google.com/papers/mapreduce.html MapReduce: Simplified Data Processing on Large Clusters]
* [http://research.google.com/archive/mapreduce.html MapReduce: Simplified Data Processing on Large Clusters]
* [http://www.slideshare.net/hepterida/jak-funguje-mapreduce Jak funguje MapReduce]
{{Autoritní data}}


[[Kategorie:Programování]]
[[Kategorie:Programování]]
[[Kategorie:Google]]

[[en:MapReduce]]

Aktuální verze z 20. 2. 2023, 23:27

MapReduce (někdy též Map/Reduce nebo MapRed) je programovací model pro zpracování velkých množin dat pomocí paralelního zpracování, a současně knihovna v jazyce C++, která jej implementuje.

Princip[editovat | editovat zdroj]

  • Mějme cluster databázových nebo jiných serverů
  • Jeden ze serverů (říkejme mu master, ale v některých modelech to může být libovolný uzel z clusteru) přijme požadavek Map/Reduce od klienta.
  • Uzel master rozešle funkci Map (nebo více zřetězených funkcí) všem ostatním uzlům clusteru, ty provedou kód této funkce a vrátí masteru výsledky, které mohou být i duplicitní (více stejných výsledků z několika uzlů — to je žádoucí kvůli odolnosti proti výpadkům). Master může také zpracovat funkci Map a také to v některých implementacích dělá.
  • V okamžiku, kdy má master dostatek výsledků z fáze Map od ostatních uzlů (a sám od sebe), nebo vyprší časový limit pro odpověď od těchto uzlů, provede master nad navrácenou množinou dat funkci Reduce. Fáze Reduce odstraní duplicitní data a provede operace, které je možné provést jen v případě, že máme kompletní množinu výsledků ze všech uzlů.
  • Na konci fáze Reduce je možné navrátit výsledek klientovi, který si tuto operaci zadal.

Postup[editovat | editovat zdroj]

Uživatel definuje funkci map (mapování), která z dvojic (klíč, hodnota) vygeneruje pracovní dvojice (klíč2, hodnota2), a funkci reduce (redukce), která spojí všechny hodnoty v pracovních datech, které mají stejný klíč.

Je přitom podstatné, že všechny mapovací funkce mohou běžet nezávisle a své výsledky mohou přímo postupovat redukčním funkcím odpovědným za daný pracovní klíč. Zpracování takto popsané úlohy je tedy téměř lineárně paralelizovatelné.

Příklad[editovat | editovat zdroj]

  • Vyhledávač má cluster s redundantně replikovanou databází textových dokumentů — např. replikace: AB, BC, CA.
  • Jeden z uzlů (master) dostane od klienta MR požadavek vrátit jména všech dokumentů obsahujících "ŘETĚZEC", číslo řádky a text celé řádky.
  • MAP(): všechny uzly projdou všechny řádky ve všech dokumentech a vrátí je masteru v poli, kde index je jméno dokumentu a číslo řádky, daty je potom text této řádky.
  • REDUCE(): master spojí všechna pole vrácené uzly, čímž odstraní (zredukuje) duplicitní indexy (a tím i duplicitní řádky).
  • výsledky fáze Reduce je možné vrátit uživateli

Příklady použití[editovat | editovat zdroj]

Frekvence přístupů na webové stránky
Mapovací funkce zpracovává log požadavků na stránky, výstupem jsou dvojice (URL, 1). Redukční funkce pro každý klíč sčítá hodnoty, výstupem jsou dvojice (URL, celkový počet).
Graf zpětných odkazů
Mapovací funkce vydá (cíl, zdroj) pro každý odkaz na “cíl”, který nalezne v dokumentu “zdroj”. Redukční funkce hodnoty spojuje, takže výsledkem je množina dvojic (cíl, seznam zdrojů).
Zpětný index
Mapovací funkce zpracuje každý dokument, výstupem je větší počet dvojic (IDslova, IDdokumentu). Redukční funkce seřadí všechny hodnoty pro daný klíč a vygeneruje dvojici (IDslova, seznam IDdokumentu).

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]