MapReduce for dummies

Supongamos que tenemos que hace un programa que cuente las palabras de esta frase:

(sin incluir a, the,…)

Una solución tradicional consistiría es ir recorriendo secuencialmente las palabras de nuestra frase y añadir a un HashMap como clave la palabra y como valor el número de ocurrencias:

Pero imaginemos ahora que tenemos que contar todas las palabras de una enciclopedia!!!, en este caso el procesamiento secuencial sería muy poco óptimo y tardaría mucho.

Podríamos dividir la frase en 2 y hacer el mismo procesamiento sobre cada una de estas partes almacenando las palabras en un HashMap (Map)

Cuando hubiésemos contado las palabras de cada parte tendríamos que combinarlos mapas de las dos sentencias en un Mapa único (Reduce):

Si ahora imaginamos que cada parte del texto la tenemos almacenada en bloques HDFS y mapeamos las tareas en cada uno de los nodos entonces podremos usar el poder de computación de cada nodo:

Cada nodo puede correr tareas (Map o Reduce)

Cada nodo puede tener almacenados Data Stores para múltiples ficheros, en cada nodo pueden correr varias tareas.

Para controlar las tareas MapReduce existen dos procesos (Hadoop):

· JobTracker : es el servicio que pas alas tareas MapReduce a los nodos específicos del cluster (idealmente cada nodo tundra los datos a procesar)

· TaskTracker: es el proceso que arranca y sigue last areas MapReduce en el cluster. Comunica con el JobTracker para la asignación de tareas y el reporting de resultados