← CC3084

Spark y Arquitecturas de Datos

Semestre 02, 2026

De dónde venimos

  • Hadoop reparte los datos en bloques replicados sobre HDFS y los recursos del clúster mediante YARN.
  • MapReduce los procesa en tres fases, mapa, mezcla y clasificación, y reducción.
  • Entre cada etapa escribe el resultado intermedio a disco.
El problema que quedó abierto

Para un algoritmo iterativo que recorre los mismos datos cincuenta veces, leer y escribir disco domina el tiempo total. Esta lección empieza justo ahí.

Apache Spark

Spark

Plataforma de procesamiento de datos a gran escala, distribuidos en muchos servidores.

Velocidad: mantiene los datos en memoria y llega a ser cien veces más rápido que MapReduce.
Facilidad de uso: código sencillo y más de cien operadores para transformar datos.
Motor unificado: SQL, streaming, aprendizaje automático y grafos en la misma plataforma.

Características de Spark

  • Es más rápido que MapReduce porque usa procesamiento en memoria.
  • Soporta Python, Scala, Java, SQL y R.
  • Es perezoso, en el sentido de que no ejecuta nada hasta que se pide un resultado concreto.
  • Funciona en una computadora personal o en clústeres de miles de nodos.
  • Trabaja con múltiples sistemas de almacenamiento, como HDFS, bases de datos o la nube.
  • Está diseñado para ser rápido, escalable y tolerante a fallos.

Evaluación perezosa


df.filter(...)      transformación   ->  no ejecuta nada
df.select(...)      transformación   ->  no ejecuta nada
df.count()          acción           ->  ahora sí ejecuta todo
Por qué conviene

Al esperar hasta la acción, Spark ve el plan completo, lo representa como un grafo dirigido acíclico y lo optimiza antes de mover un solo dato.

Spark y Hadoop

AspectoMapReduceSpark
Resultados intermediosDiscoMemoria
ModeloDos etapas fijasGrafo dirigido acíclico
Velocidad iterativaLentaHasta cien veces mayor
StreamingNo incluidoIncluido
LenguajesJava principalmentePython, Scala, Java, SQL, R
Aclaración

Spark no reemplaza a Hadoop, reemplaza a MapReduce. Es común usar HDFS como almacenamiento y Spark como motor sobre esos mismos datos.

Arquitectura de Spark

Maestro-esclavo

Un controlador que funciona como nodo maestro y varios ejecutores que corren como nodos de trabajo. Sirve para procesamiento por lotes y en tiempo real.

ComponenteRol
DriverCoordina la ejecución, corre la función principal y crea el SparkContext
SparkContextPunto de entrada a Spark, representa la conexión al clúster y coordina tareas
Cluster ManagerAsigna recursos y administra el clúster, sea YARN, Mesos o el propio de Spark
ExecutorProceso en un nodo de trabajo que ejecuta tareas y guarda datos en caché
TaskUnidad de trabajo más pequeña, un cálculo sobre una sola partición

Flujo de ejecución


Driver -> SparkContext -> Cluster Manager -> Executors -> Tasks
                                                  |
                                    resultados de vuelta al Driver
Cómo se reparte

El driver parte el trabajo en tareas y las asigna a los ejecutores, que trabajan de forma simultánea y guardan datos en memoria o disco para reutilizarlos.

RDD y DataFrame

RDD

Resilient Distributed Dataset, la abstracción original. Colección distribuida, inmutable y tolerante a fallos porque recuerda cómo fue construida.

DataFrame

Capa estructurada sobre esa base, con columnas y tipos, que el optimizador de consultas puede analizar y mejorar.

En la práctica

Se trabaja con DataFrames, y solo se baja a RDD cuando se necesita control fino sobre las particiones.

Componentes de Spark


┌────────────┬─────────┬─────────────┬──────────┐
│ Spark SQL  │  MLlib  │    Spark    │  GraphX  │
│ DataFrames │         │  Streaming  │          │
├────────────┴─────────┴─────────────┴──────────┤
│                 Spark Core API                │
│               motor de ejecución              │
└───────────────────────────────────────────────┘

 Se programa en   Scala · Python · Java · SQL · R
Diseño

Las cuatro librerías de arriba son opcionales y se apoyan sobre el mismo núcleo. Los lenguajes de abajo son la puerta de entrada, no una capa del sistema.

Spark Core

  • Es el motor de ejecución general subyacente sobre el que se construye todo lo demás.
  • Proporciona la capacidad de cálculo en memoria.
  • Hace referencia a conjuntos de datos almacenados en sistemas externos.
  • Contiene la programación, la distribución y la monitorización de trabajos en el clúster.
  • Se encarga del despacho de tareas y de la recuperación ante fallos.

Librerías de alto nivel

LibreríaPara qué sirveEjemplo de uso
Spark SQLConsultas sobre datos estructurados con DataFramesExplorar un histórico de ventas
MLlibAprendizaje automático escalable sobre el clústerEntrenar un clasificador
Spark StreamingFlujos en vivo procesados por microlotesLeer eventos de Kafka
GraphXAnálisis de grafos como multigrafo dirigidoCalcular caminos mínimos
Lo que las une

Las cuatro comparten el mismo motor y los mismos datos en memoria, así que se combinan en un solo programa sin exportar nada entre etapas.

Data Warehouse

Data warehouse

Repositorio central de datos ya limpios, integrados y modelados, pensado para responder consultas analíticas de negocio.

  • Esquema al escribir, es decir, los datos se estructuran antes de guardarse.
  • Solo admite datos estructurados, en tablas con tipos definidos.
  • Consultas rápidas y confiables, con transacciones y control de acceso.
  • Almacenamiento costoso, porque el cómputo y el disco suelen venir acoplados.
  • Cambiar el modelo es caro, y lo que no entró al esquema se pierde.

Data Lake

Data lake

Repositorio que guarda los datos en su formato crudo, sin imponer una estructura previa, sobre almacenamiento de objetos barato.

  • Esquema al leer, es decir, la estructura se decide en el momento del análisis.
  • Admite datos estructurados, semiestructurados y no estructurados por igual.
  • Almacenamiento barato y escalable, típicamente HDFS, S3 o equivalentes.
  • No garantiza transacciones ni consistencia entre escrituras concurrentes.

El pantano de datos

Data swamp

Un lago sin catálogo, sin documentación y sin control de calidad se vuelve un depósito donde nadie encuentra nada ni confía en lo que encuentra.

La lección

Guardar todo es barato, pero la gobernanza es el costo real. Sin metadatos ni linaje, el volumen acumulado deja de ser un activo.

Data Lakehouse

Data lakehouse

Arquitectura que pone las garantías de un warehouse sobre el almacenamiento barato de un lake, para no mantener dos sistemas separados.

WarehouseLakeLakehouse
EsquemaAl escribirAl leerAl leer, con validación
DatosEstructuradosTodosTodos
CostoAltoBajoBajo
TransaccionesNo
Casos de usoReportesExploraciónAmbos

Formatos de tabla abiertos

Delta Lake, Apache Iceberg y Apache Hudi son las tres opciones principales.
Agregan transacciones sobre archivos guardados en almacenamiento de objetos.
Permiten consultar el estado de una tabla en un momento anterior.
Validan el esquema al escribir, para que un cambio no rompa las consultas existentes.
Contexto

El término lakehouse lo acuñó Databricks en 2020. Describe un cambio real, pero nace de un proveedor y no de un consenso neutral.

Databricks

Plataforma que integra el ciclo de vida del dato, con Spark como motor de fondo.

ETL, para extraer, transformar y cargar datos.
Warehousing, para almacenamiento analítico consultable.
Data Sharing, para compartir datos entre equipos y organizaciones.
Orchestration, para programar y encadenar trabajos.
Governance, para permisos, linaje y auditoría.
Inteligencia artificial, para entrenar y servir modelos.

Databricks en el curso

El problema

Levantar un clúster de Hadoop o Spark desde cero exige administración de sistemas que no es el objeto de esta clase.

La solución

Databricks entrega el clúster ya configurado y deja el foco en el análisis de los datos.

Preparación del ambiente

1Crear la cuenta
  • Ingresar a https://login.databricks.com/ y registrarse.
2Crear la instancia gratuita
  • La plataforma provee el clúster ya configurado.
3Verificar
  • Crear un notebook, asociarlo al clúster y ejecutar una consulta sencilla sobre un conjunto de ejemplo.

Resumen

  • Spark reemplaza a MapReduce manteniendo los datos en memoria, y llega a ser cien veces más rápido en cargas iterativas.
  • Es perezoso, así que ve el plan completo antes de ejecutarlo y lo optimiza como grafo dirigido acíclico.
  • Su arquitectura es maestro-esclavo, con un driver que coordina y ejecutores que trabajan en paralelo.
  • Sobre Spark Core se apoyan Spark SQL, MLlib, Spark Streaming y GraphX, todos con el mismo motor.

Resumen

  • El warehouse exige esquema al escribir y solo acepta datos estructurados.
  • El lake guarda todo crudo y barato, pero sin gobernanza se vuelve un pantano de datos.
  • El lakehouse busca las garantías del warehouse sobre el costo del lake, apoyado en formatos de tabla abiertos.
  • Databricks integra el ciclo de vida completo del dato sobre Spark, sin administrar la infraestructura.