MapReduce es un framework introducido por Google para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras. Se han escrito implementaciones de MapReduce en C++, Java, Python y otros lenguajes.
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:
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.
Otra Tecnologia:
Hadoop es una plataforma que nos permite desarrollar aplicaciones que tengan que tratar con grandes cantidades de datos, hasta petabytes. Se trata de un subproyecto de Lucene, un proyecto de Apache que desarrolla software para realizar búsquedas. Hadoop es muy útil cuando vamos a realizar proyectos que necesiten de escalabilidad, ya hemos dicho que puede almacenar y procesar petabytes de informacion. A su vez, es perfecto para un cluster de servidores, distribuyendo la información entre los nodos, siendo posible disponer de miles de nodos. Al disponer los datos de forma distribuida, la búsqueda se puede realizar muy rápidamente ya que Hadoop puede acceder a ella de forma paralela. Y aunque los datos estén distribuidos, no hay que preocuparse de fallos ya que dispone de un sistema de seguridad.
Hadoop implemente el MapReduce de Google, usando un sistema distribuido para dividir las aplicaciones en pequeñas tareas. Hadoop se ha llegado a probar en un cluster de 2.000 máquinas y se está intentando alcanzar la cifra de 10.000 máquinas. Es necesario Java para su desarrollo y Linux, aunque se puede usar Windows para desarrollo, aunque el cluster no funciona del todo bien.
Fuentes:
No hay comentarios:
Publicar un comentario