Saltar al contenido
Spark vs Hadoop vs Kafka

31 de mayo de 2026

Spark vs Hadoop vs Kafka

Una comparación práctica de Apache Spark, Hadoop y Kafka — qué hace cada uno y cuándo usarlo.

Data Infrastructure
Spark Hadoop Kafka Big Data

Spark, Hadoop y Kafka son tres pilares de la infraestructura de datos moderna. Resuelven problemas diferentes y a menudo trabajan juntos.

Comparación Rápida

SparkHadoop (MapReduce)Kafka
QuéMotor de computación distribuidaAlmacenamiento + computación distribuidaStreaming de eventos distribuido
PropósitoProcesar datos (batch + stream)Almacenar y procesar big dataMover datos entre sistemas
VelocidadRápido (en memoria)Lento (basado en disco)Tiempo real
DatosProcesa datosAlmacena + procesa datosTransporta datos
LenguajePython, Scala, Java, SQLJavaCualquiera (productor/consumidor)

Hadoop

El framework original de big data (2006). Dos componentes principales:

HDFS — Sistema de Archivos Distribuido de Hadoop

Almacena archivos en múltiples máquinas.

Archivo (300MB)
├── Bloque 1 (128MB) → Nodo 1, Nodo 3 (réplica)
├── Bloque 2 (128MB) → Nodo 2, Nodo 4 (réplica)
└── Bloque 3 (44MB)  → Nodo 3, Nodo 1 (réplica)
  • Los archivos se dividen en bloques (128MB por defecto)
  • Cada bloque replicado (3 copias por defecto)
  • NameNode rastrea dónde están los bloques

MapReduce

El motor de computación de Hadoop. Lento porque lee/escribe a disco entre pasos.

Entrada → Map (disco) → Shuffle (disco) → Reduce (disco) → Salida

Ecosistema Hadoop

HerramientaPropósito
HDFSAlmacenamiento de archivos distribuido
YARNGestión de recursos
HiveConsultas SQL sobre Hadoop
HBaseBase de datos NoSQL sobre HDFS
PigScripting de flujo de datos

Estado: HDFS se sigue usando, pero MapReduce ha sido reemplazado en gran parte por Spark.

Apache Spark

Un motor de computación distribuida rápido y de propósito general. 10-100x más rápido que MapReduce porque procesa datos en memoria.

Entrada → Transformar (memoria) → Transformar (memoria) → Salida

Componentes de Spark

┌─────────────────────────────────┐
│         Spark SQL               │ ← Consultas SQL
├───────────┬───────────┬─────────┤
│ Spark     │ MLlib     │ GraphX  │
│ Streaming │ (ML)      │ (Grafos)│
├───────────┴───────────┴─────────┤
│        Spark Core (RDDs)        │
├─────────────────────────────────┤
│  YARN / Kubernetes / Standalone │
└─────────────────────────────────┘

Ejemplo PySpark

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("ejemplo").getOrCreate()

# Leer datos
df = spark.read.parquet("s3://bucket/ventas/")

# Transformar
resultado = (df
    .filter(df.año == 2025)
    .groupBy("region")
    .agg({"ingresos": "sum", "pedidos": "count"})
    .orderBy("sum(ingresos)", ascending=False)
)

# Escribir
resultado.write.parquet("s3://bucket/resultados/")

Cuándo Usar Spark

  • Procesamiento batch de grandes datasets
  • Pipelines ETL/ELT
  • Machine learning a escala (MLlib)
  • Consultas SQL interactivas (Spark SQL)
  • Procesamiento de streams (Structured Streaming)

Apache Kafka

Una plataforma de streaming de eventos distribuida. Piensa en ella como un log permanente y ordenado de eventos.

Productores ──→ Topics de Kafka ──→ Consumidores
                     │
                ┌────┴────┐
                │Partición0│ [msg1, msg2, msg3, ...]
                │Partición1│ [msg1, msg2, ...]
                │Partición2│ [msg1, msg2, msg3, msg4, ...]
                └─────────┘

Conceptos Clave

ConceptoQué Es
TopicUna categoría/feed de mensajes
ParticiónUn topic dividido para paralelismo
ProductorEnvía mensajes a un topic
ConsumidorLee mensajes de un topic
Consumer GroupMúltiples consumidores compartiendo trabajo
OffsetPosición de un consumidor en una partición
BrokerUn servidor Kafka

Casos de Uso de Kafka

Caso de UsoCómo
Event sourcingAlmacenar todos los cambios de estado como eventos
Agregación de logsRecopilar logs de todos los servicios
Procesamiento de streamsProcesar eventos en tiempo real
Integración de datosConectar bases de datos, apps, data lakes
Comunicación de microserviciosMensajería asíncrona entre servicios

Kafka Connect

Mover datos entre Kafka y otros sistemas sin código:

Base de Datos ──→ Source Connector ──→ Kafka ──→ Sink Connector ──→ S3
PostgreSQL                             Topic                        Data Lake

Cómo Trabajan Juntos

Apps/BDs ──→ Kafka ──→ Spark Streaming ──→ Data Lakehouse
               │                               │
               └──→ Spark Batch ──────────→ Data Warehouse
                        │
                   (lee de HDFS/S3)
CapaHerramientaRol
TransporteKafkaMover eventos en tiempo real
AlmacenamientoHDFS / S3Almacenar datos crudos a escala
ProcesamientoSparkTransformar y analizar
ServicioBase de Datos / WarehouseServir a usuarios

Resumen

HerramientaUsar Cuando
Hadoop (HDFS)Necesitas almacenamiento distribuido barato
SparkNecesitas procesar/transformar grandes datos
KafkaNecesitas transporte de datos en tiempo real entre sistemas