Big Data y Procesamiento Distribuido · Ingeniería de Datos

Paralelismo y MapReduce

Explicar el modelo dividir-y-vencer de MapReduce, sus fases map, shuffle y reduce, y los límites que reveló y que motivaron motores más rápidos.

Paralelismo y MapReduce

Divide, reparte, combina La idea central es incómodamente simple: parte el problema en fragmentos independientes, repártelos entre máquinas, procesa cada uno sin mirar a los demás y combina las piezas. El resto es gestión de fallos y movimiento de datos.

Por qué paralelizar

Un solo equipo tarda en proporción al volumen; partirlo entre muchos baja el tiempo, si la tarea es divisible y el coste de coordinar no se come la ganancia. El paralelismo pelea contra el volumen, no contra la latencia de una única operación pequeña.

Fase map

Cada nodo toma su partición de entrada y emite pares clave-valor transformando las filas. Es la parte que se paraleliza con naturalidad porque cada trozo es independiente de los demás.

Shuffle

Entre map y reduce, el sistema agrupa por clave todas las values dispersas, moviendo datos entre nodos. Es la fase más cara: implica red y disco, y suele marcar el cuello de botella del trabajo.

Un gran bloque de datos a la izquierda se reparte con flechas en tres máquinas; sus salidas se cruzan hacia un embudo y de él salen dos montones de bloques agrupados.
El problema se parte, cada máquina transforma su trozo, el embarullado agrupa por clave y la reducción combina.

Fase reduce

Con las claves agrupadas, cada reductor agrega las values de una clave: sumar, contar o combinar. Aquí nace el resultado global a partir de piezas locales ordenadas por clave.

Tolerancia a fallos

El límite de MapReduce

Encadenar muchos pasos escribiendo en disco tras cada MapReduce resultó lentísimo para tareas iterativas o interactivas. Guardar en memoria los resultados intermedios, como luego haría Spark, fue la respuesta a ese dolor.

Cuándo sigue valiendo

Para volcados masivos de una sola pasada sobre datos que caben en disco, su sencillez y robustedad continúan siendo oro. No todo pide un motor en memoria; a veces basta partir, procesar y sumar.

Errores frecuentes

Ejemplo resuelto: contar palabras en un archivo gigante

Un corpus de cientos de gigabytes necesita el recuento de frecuencia por palabra. El montaje:

  1. Partir el texto en bloques que quepan y puedan leerse en cada nodo, sin solaparse.
  2. Mapear: cada nodo emite pares palabra y uno para cada aparición de su bloque.
  3. Dejar que el marco agrupe por clave, reuniendo en un mismo nodo todas las apariciones de una palabra.
  4. Reducir: sumar los unos de cada palabra y emitir el total.
  5. Aprovechar la tolerancia: si un nodo cae, se recalcula solo su partición, no todo el corpus.

¿Para qué sirve en la realidad?

El modelo maduró en buscadores indexando la web entera y sigue detrás de los volcados masivos de una pasada: métricas de telemetría, depuración de logs o agregados nocturnos donde la robustez vale más que la latencia.

En MapReduce, la fase donde los datos se reordenan y agrupan por clave moviéndose entre nodos, y que suele dominar el coste, es:

La principal crítica a MapReduce fue su lentitud en trabajos iterativos por escribir en disco cada etapa.

MapReduce

Fase que transforma cada trozo en pares clave-valor
map
Fase que agrupa por clave moviendo datos
shuffle
Fase que agrega las values de cada clave
reduce
Recalcular piezas fallidas da al sistema...
tolerancia a fallos
El talón de Aquiles de MapReduce era escribir en...
disco

Ordena las fases de un trabajo MapReduce clásico:

Map
Shuffle
Reduce
Salida

MapReduce
Descripción del modelo map-shuffle-reduce y su origen.

Une cada fase o propiedad con su descripción.

Divide, reparte, combina

# MapReduce
## Ideas
### dividir y vencer
### piezas independientes
## Fases
### map transforma
### shuffle agrupa
### reduce combina
## Fallos
### entrada inmutable
### se recomputa la pieza
## Cuello
### el shuffle mueve red y disco
### particionar bien lo alivia

Qué es MapReduce
Explicación del modelo de programación paralelo y su escalabilidad en el tratamiento de datos.

Un análisis necesita doce iteraciones ajustando un modelo sobre los mismos datos. ¿Por qué MapReduce sufriría y qué cambio de arquitectura aliviaría ese coste? Razona por materialización en disco frente a memoria.