En esta lección conoceremos Hadoop, una de las tecnologías más importantes en el mundo del Big Data. Hadoop permite almacenar y procesar grandes volúmenes de datos de manera distribuida y tolerante a fallos.
¿Qué es Hadoop?
Hadoop es un marco de software de código abierto que facilita el procesamiento distribuido de grandes conjuntos de datos a través de clusters de servidores.
Escalable: puede ejecutarse en cientos o miles de nodos.
Tolerante a fallos: los datos se replican para evitar pérdidas.
Económico: funciona sobre hardware común.
Componentes principales
HDFS (Hadoop Distributed File System): sistema de archivos distribuido.
MapReduce: modelo de programación para procesar datos en paralelo.
YARN (Yet Another Resource Negotiator): gestor de recursos y planificación de tareas.
Arquitectura de Hadoop
NameNode: nodo maestro que gestiona la metadata del sistema de archivos.
DataNodes: nodos que almacenan físicamente los bloques de datos.
ResourceManager: asigna recursos a las aplicaciones.
NodeManagers: ejecutan las tareas en cada nodo.
Ejemplo de flujo MapReduce
Input: colección de documentos de texto.
Map: cada nodo cuenta las palabras en sus documentos.
Shuffle: reorganiza los resultados por palabra.
Reduce: suma las ocurrencias de cada palabra.
Output: listado de palabras con sus frecuencias.
Ejemplo práctico: WordCount en Hadoop Streaming
# Ejecutar un conteo de palabras
hadoop jar /path/hadoop-streaming.jar \
-input /data/textos \
-output /salida/wordcount \
-mapper "python mapper.py" \
-reducer "python reducer.py"
Mapper en Python
# mapper.py
import sys
for line in sys.stdin:
for word in line.strip().split():
print(f"{word}\t1")
Reducer en Python
# 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}")
Limitaciones: latencia alta, complejo de configurar, menos eficiente para datos en tiempo real.
Reflexión final
Hadoop revolucionó la forma de manejar grandes volúmenes de datos. Aunque hoy convive con tecnologías más rápidas como Spark, sigue siendo la base para entender el Big Data distribuido.