jueves, 19 de abril de 2012

Reporte

En está semana se investigó sobre MapReduce que este es un framework introducido por Google para dar soporte a la computación paralela sobre grandes colecciones de datos en un gran número de computadoras.El nombre del framework está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional:
Map y Reduce

Las funciones Map y Reduce están definidas ambas con respecto a datos estructurados en pares (clave, valor). Map toma uno de estos pares de datos con un tipo en un dominio de datos, y devuelve una lista de pares en un dominio diferente:
Map(k1,v1) -> list(k2,v2)  

La función de mapeo es aplicada en paralelo para cada ítem en la entrada de datos.

Esto produce una lista de pares (k2,v2) por cada llamada. Después de eso, el framework de MapReduce junta todos los pares con la misma clave de todas las listas y los agrupa, creando un grupo por cada una de las diferentes claves generadas.

La función reduce es aplicada en paralelo para cada grupo, produciendo una colección de valores para cada dominio:
Reduce(k2, list (v2)) -> list(v2)  
Cada llamada a Reduce típicamente produce un valor v2 o una llamada vacía, aunque una llamada puede retornar más de un valor.

El retorno de todas esas llamadas se recoge como la lista de resultado deseado.  Por lo tanto, el framework MapReduce transforma una lista de pares (clave, valor) en una lista de valores. Este comportamiento es diferente de la combinación "map and reduce" de programación funcional, que acepta una lista arbitraria de valores y devuelve un valor único que combina todos los valores devueltos por mapa.

Busqué algún libro que me pueda ayudar a entender estos conceptos y lo más factible que encontré fue este:
 Writing and Querying MapReduce Views in CouchDB
http://www.amazon.com/exec/obidos/tg/detail/-/1449303129

Mi nominación de la semana es Abraham, ya que habló sobre Web Crawler y algunos conceptos no los sabía.

Fuente:
 MapReduce : Wikipedia

1 comentario: