MapReduce

De Viquipèdia
Salta a: navegació, cerca

MapReduce és un 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.[1][2]

Un programa MapReduce es compon d'un procediment Map() que efectua el filtrat i ordenat (per exemple ordenar estudiants pel primer cognom en cues, amb una cua per cognom) i un 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 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,[3] 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.[4] El benefici del model MapReduce es nota sobretot quan s'utilitza l'optimització d'execució distribuïda (que redueix els costos de comunicació de xarxa) i la tolerància a errors. Optimitzar el cost de les comunicacions de xarxa és essencial per a un bon algorisme MapReduce.

Hi ha llibreries de funcions MapReduce per a molts llenguatges de programació, amb diversos nivells d'optimització. Una de les més populars és la d'Apache Hadoop. El nom MapReduce inicialment feia referència a la tecnologia privativa de Google, però fa temps que s'utilitza com a terme genèric.

Referències[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: MapReduce Modifica l'enllaç a Wikidata
  1. Google spotlights data center inner workings | Tech news blog - CNET News.com
  2. MapReduce: Simplified Data Processing on Large Clusters
  3. "Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages." -"MapReduce: Simplified Data Processing on Large Clusters", by Jeffrey Dean and Sanjay Ghemawat; from Google Research
  4. «MongoDB: Terrible MapReduce Performance». Stack Overflow, 16-10-2010. «The MapReduce implementation in MongoDB has little to do with map reduce apparently. Because for all I read, it is single-threaded, while map-reduce is meant to be used highly parallel on a cluster. ... MongoDB MapReduce is single threaded on a single server...»