Inicio > BIGDATA > Hadoop y mapreduce

HADOOP Y MAPREDUCE

01/01/2018BIGDATA

 

Hadoop es un sistema de código abierto que se utiliza para almacenar, procesar y analizar grandes volúmenes de datos; cientos de terabytes, petabytes o incluso más. Hadoop surgió como iniciativa open source (software libre) a raiz de la publicación de varios papers de Google sobre sus sistemas de archivo, su herramienta de mapas y el sistema BigTable Reduce.Hadoop es un marco de programación libre que soporta el procesamiento de grandes conjuntos de datos en un entorno de computación distribuida.
La historia de Hadoop está necesariamente unida a la de Google. De hecho, podría decirse que Hadoop nace en el momento en que Google precisa urgentemente de una solución que le permita continuar procesando datos al ritmo que necesita, en una proporción que repentinamente ha crecido de forma exponencial.
MapReduce se basa en el concepto de dividir una tarea en tareas más pequeñas y procesarlas en paralelo. De esta forma se facilita la gestión. Los usuarios especifican una función de mapa que procesa un par de clave / valor para generar un conjunto de pares de clave / valor intermedio, y una función reductora que combina todos los valores intermedios asociados con la misma clave intermedia.
Para entender mejor MapReduce voy a explicarlo con un ejemplo bastante sencillo:
Supongamos que tenemos una fuente de datos enorme, en csv, json, en base de datos, xml o cualquier otra fuente con la puntuación de un juego:

01-11-2017 Ana 11 ptos.
01-11-2017 Pablo 9 ptos.
01-11-2017 Angel 3 ptos.
------------------------
15-12-2017 Pablo 32 ptos.
15-12-2017 Ana 47 ptos.
15-12-2017 Angel 13 ptos.
------------------------
01-01-2018 Pablo 2 ptos.
01-01-2018 Ana 3 ptos.
01-01-2018 Angel 32 ptos.

En este caso la función map nos daría la información que nos interesa, en este caso los nombres y los puntos:

  • Ana 11
  • Pablo 9
  • Ángel 3
  • Pablo 32
  • Ana 47
  • Ángel 13
  • Pablo 2
  • Ana 3
  • Ángel 32
Luego la función reduce procesará los datos:

  • Ana 61
  • Ángel 48
  • Pablo 43

En MapReduce hay un input o entrada y un input o salida. El input es la fuente de datos y la salida sería el resultado de reduce aunque parseado y bonito. En este ejemplo el output sería el reduce ordenado por los puntos obtenidos de mayor a menor o por orden alfabético. Poéis ver un ejemplo en php: MapReduce en php