- Back to Home »
- MapReduce... ¿Quién necesita un mapa?
Posted by : Unknown
martes, marzo 25, 2014
¡Hola! :D
En esta ocasión hablaré acerca del artículo titulado "MapReduce: Simplified Data Processing on Large Clusters" escrito por Jeffrey Dean y Sanjay Ghemawat, y publicado en el Communications of the ACM en enero del 2008.
Como ya bien sabemos, la cantidad de información contenida
en bases de datos se ha incrementado exponencialmente, por lo que las bases de
datos relacionales han ido perdiendo efectividad al momento de realizar
búsquedas de información. Por eso mismo los modelos relacionales han pasado a
segundo plano, dejando lugar a conceptos nuevos como NoSQL y Big Data. Una de
las técnicas para buscar información en Big Data es, justamente, MapReduce.
Esta técnica consiste en dos operaciones: map y reduce. Map
consiste en tomar una entrada y devolver un conjunto con pares “intermedios” de
llaves-valores. A su vez, este conjunto
será pasado como parámetro a la función reduce (que además recibe una llave
adicional) para juntar la información realizada por el map. Tanto la función
map como la función reduce son definidas por el usuario. Estas dos funciones
pueden verse como aquellas que están definidas en lenguajes funcionales como
Lisp o Clojure.
La importancia del MapReduce llega cuando hablamos de
realizarlo de manera distribuida (es distribuido debido a que tenemos una red
de procesadores y no hay una memoria compartida para todos los equipos). De
esta manera, se tienen a los “trabajadores” de map realizando esta función,
almacenar los resultados temporales en un búfer y posteriormente los
“trabajadores” de reduce realizando esta función en un almacenamiento común
(por obvias razones, debe haber un maestro que se encargue de coordinar estas
operaciones y obtener el resultado final).
Finalmente, podemos hacer énfasis en que los usuarios de MapReduce pueden encontrarse con pocas problemáticas de sección crítica, ya que si el reduce definido por el usuario no está definido correctamente, existirá una condición de carrera o deadlocks.
Espero que esta entrada haya sido de su agrado :)