MapReduce: diferència entre les revisions

Contingut suprimit Contingut afegit
m Format
m Enllaços a Google en català
Línia 1:
'''MapReduce''' és un [[Paradigma de programació|model de programació]] i d'implementació per a processar i generar jocs de dades grans, amb un [[algorisme]] paral·lel i distribuït, en un [[clúster]].<ref>{{Ref-web |url=http://news.cnet.com/8301-10784_3-9955184-7.html |títol=Google spotlights data center inner workings {{!}} Tech news blog - CNET News.com<!-- Bot generated title --> |consulta=2015-02-24 |arxiuurl=https://web.archive.org/web/20131019063218/http://news.cnet.com/8301-10784_3-9955184-7.html |arxiudata=2013-10-19 }}</ref><ref>[http://static.googleusercontent.com/media/research.google.comcat/es/us/archive/mapreduce-osdi04.pdf MapReduce: Simplified Data Processing on Large Clusters]</ref>
 
Un programa MapReduce es compon d'un [[Subrutina | procediment]] '''Map()''' que efectua el filtrat i ordenat (per exemple ordenar estudiants pel primer cognom en cues, amb una cua per cognom) i un[[subrutina | procediment]] '''Reduce()''', que fa l'operació d'agregació (com, per exemple, comptar el nombre d'estudiants a cada cua, obtenint-ne la freqüència dels cognoms). El "Sistema MapReduce" (també conegut com a ''infraestructura'' o ''framework'') orquestra el procés [[Serialització|serialitzant]] (''marshalling'' en anglès) els servidors distribuïts, executant diverses tasques en paral·lel, gestionant les comunicacions de transferència de dades entre les diverses parts del sistema i proporcionant [[redundància]] i [[tolerància a errors]].
 
El model s'inspira en les funcions ''map'' i ''reduce'' usades habitualment en la [[programació funcional]],<ref name="map">"Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages." -[http://research.google.comcat/archive/mapreduce.html "MapReduce: Simplified Data Processing on Large Clusters"], by Jeffrey Dean and Sanjay Ghemawat; from Google Research</ref> tot i que el seu propòsit dins el framework MapReduce no és el mateix que en la seva forma original. Les contribucions clau del framework MapReduce no són específicament les funcions map i reduce, sinó l'escalabilitat i la tolerància a errors que n'obtenen les aplicacions en optimitzar-se el motor d'execució un sol cop. Així, una implementació MapReduce d'un sol fil d'execució, com MongoDB, no acostuma a ser gaire més ràpida que la implementació "no MapReduce" habitual i cal implementar-ho en forma multi-fil per a notar-ne la millora.<ref name=stackoverflow>{{ref-web| url = https://stackoverflow.com/questions/3947889/mongodb-terrible-mapreduce-performance
|títol= MongoDB: Terrible MapReduce Performance
|editor= Stack Overflow
Línia 58:
=== Exemples ===
==== Recompte de paraules ====
L'exemple canònic de ''MapReduce'' compta l'aparició de cada paraula en un conjunt de documents:<ref>{{cite web|url=http://research.google.comcat/archive/mapreduce-osdi04-slides/index-auto-0004.html|title=Example: Count word occurrences|publisher=Google Research|access-date=September 18, 2013}}</ref>
'''function''' map(String name, String document):
''// name: document name''