MISIÓN 2 · Lección 5

Aplicación Distribuida con Hadoop (MapReduce)

En esta lección aprenderemos a desarrollar una aplicación distribuida con Hadoop utilizando el modelo de programación MapReduce. Implementaremos un caso clásico de conteo de palabras (WordCount).

Recordatorio: ¿Qué es MapReduce?

Ejemplo: ejecución de WordCount

hadoop jar /path/hadoop-streaming.jar \
  -input /data/textos \
  -output /salida/wordcount \
  -mapper "python mapper.py" \
  -reducer "python reducer.py"

Mapper en Python

El mapper recibe líneas de texto y emite cada palabra con el valor 1.

# mapper.py
import sys
for line in sys.stdin:
    for word in line.strip().split():
        print(f"{word}\t1")

Reducer en Python

El reducer agrupa las palabras y suma sus ocurrencias.

# reducer.py
import sys
from collections import defaultdict

counts = defaultdict(int)
for line in sys.stdin:
    word, value = line.strip().split("\t")
    counts[word] += int(value)

for word, count in counts.items():
    print(f"{word}\t{count}")

Optimización en MapReduce

Ejemplo con Combiner

# combiner.py (igual que reducer pero aplicado en el mapper)
import sys
from collections import defaultdict

counts = defaultdict(int)
for line in sys.stdin:
    word, value = line.strip().split("\t")
    counts[word] += int(value)

for word, count in counts.items():
    print(f"{word}\t{count}")

Aplicaciones comunes de MapReduce

Ventajas y limitaciones

Reflexión final

MapReduce fue una revolución en el procesamiento distribuido de datos. Aunque tecnologías como Spark lo han superado en velocidad y facilidad, sigue siendo fundamental para entender los principios del Big Data.