Hadoop Apache (II) – MapReduce

Mapreduce
El efecto de “saltito” del elefante es demoledor

Hoy vamos a dar un repaso a la tecnología MapReduce, uno de sus dos componentes principales (HDFS y MapReduce). Lets Go!

1. ¿Qué es MapReduce?

Nos permite automatizar la paralelización y distribución, así como una tolerancia a fallos muy baja, herramientas para monitorizar y obtener el estado. Además es una clara abstracción para los programadores, y está escrito en Java.

MapReduce abstrae y libera todas las tareas de “limpieza” a los programadores, y pueden concentrarse simplemente en escribir las funciones Map y Reduce.

2. Fases Map y Reduce

2.1 Fase Map

Hadoop intenta asegurarse que los Mappers se ejecutan en nodos que mantienen una porción de los datos locales, para evitar tráfico en la red. Se ejecutan de manera paralela los Mappers, donde cada uno procesa una porción de los datos de entrada.

El Mapper lee los Datos en forma de pares clave/valor y muestra cero o más pares clave/valor:
map(clave_entrada,valor_entrada)->lista (clave, valor)

Mapper puede usar o ignorar completamente la clave de entrada, por ejemplo, un parón estándar es leer una línea de un archivo a la vez:

• La clave es el byte offset dentro del archivo del cual comienza la línea.
• El valor es el contenido de la línea en sí misma.
• Normalmente la clave se considera irrelevante.

Si no escribe nada en absoluto fuera, el output debe ser de la forma par clave/valor.

Ejemplo – Contar el número de Palabras:

Contar el número de veces que se encuentra una palabra en un documento con una gran
cantidad de palabras como Datos de entrada:

Map(input_key, input_value)
Foreach Word w in input_value:
Emit(w,1)

1
Datos de Entrada del Mapper

 

2
Datos de Salida del Mapper

 

2.2 Fase Reduce

Después de que acabe la fase de Map, todos los valores intermedios para una clave intermedia dada, son combinados juntos en una lista.

Esta lista es dada a un Reductor:
• Puede que que haya un solo Reductor o múltiples reductores.
• Todos los valores asociados con un clave intermedia en particular son garantizados de que irán al mismo Reductor.
• Las claves intermedias, y su lista de valores, son pasados al reductor ordenados por Clave
• Este paso se conoce como Shuffle and Sort.

Finalmente, el reductor devuelve cero o más como pares Clave/valor, donde serán escrito al HDFS. En la práctica, el Reductor normalmente devolverá un solo par clave/valor para cada clave introducida.

 

3
La Fase Map quedaría así 🙂

 

Ejemplo – Reductor Suma:

1. Función de reducción que nos contará el número de veces que aparece cada palabra
Reduce(output_key,intermediate_vals)
Set count = 0
Foreach v in intermediate_vals:
Count +=v
emit(output_key, count)

4
Datos de salida del reductor

 

Quedaría tal que así:

5
Vista del proceso Reductor

 

Una vista completa de toda la fase de MapReduce:

5
El proceso completo de Map Reduce

 

Hasta aquí la lección de hoy.

hadoop_coin

 

Os espero en el siguiente post amigos 🙂

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s