Saltar a contenido

Arquitectura de Spark

Banner del Curso

Introducci贸n

Comprender c贸mo funciona Apache Spark por dentro es clave para aprovechar al m谩ximo su capacidad de procesamiento distribuido. En este cap铆tulo, analizaremos la arquitectura de Spark, sus componentes principales y c贸mo interact煤an durante la ejecuci贸n de un trabajo.


驴Por qu茅 es importante entender la arquitectura?

Spark est谩 dise帽ado para escalar horizontalmente. Esto significa que puede distribuir tareas en m煤ltiples m谩quinas o n煤cleos. Saber c贸mo est谩 organizado el motor te permitir谩:

  • Optimizar la ejecuci贸n de tus scripts.
  • Comprender mejor errores y cuellos de botella.
  • Tomar decisiones informadas sobre configuraci贸n y recursos.

Componentes principales de Spark

La arquitectura de Spark se basa en un modelo maestro-trabajador (master-worker). A continuaci贸n se describen sus elementos clave:

1. Driver

  • Es el programa principal que ejecutas.
  • Contiene tu c贸digo PySpark y gestiona la ejecuci贸n del trabajo.
  • Coordina la comunicaci贸n con el resto del cl煤ster.

2. Cluster Manager

  • Es el orquestador del cl煤ster.
  • Se encarga de asignar recursos a la aplicaci贸n Spark.
  • Puede ser Standalone, YARN, Mesos, Kubernetes, etc.

3. Executors

  • Son procesos que corren en los nodos del cl煤ster.
  • Ejecutan las tareas asignadas por el Driver.
  • Cada executor tiene su propia memoria y cach茅.

4. Tasks

  • Son las unidades m谩s peque帽as de trabajo que ejecutan operaciones sobre particiones de datos.
  • Son asignadas por el Driver a los Executors.

Diagrama l贸gico

   +------------------+
   |      Driver      |
   +--------+---------+
            |
            v
   +------------------+
   | Cluster Manager  |
   +--------+---------+
            |
    +-------+-------+
    |               |
    v               v
+--------+     +--------+
|Executor|     |Executor|
| Task 1 |     | Task 2 |
| Task 3 |     | Task 4 |
+--------+     +--------+

驴Qu茅 es un DAG?

Spark representa cada trabajo como un DAG (Directed Acyclic Graph) de transformaciones. Esto permite:

  • Planificar la ejecuci贸n antes de ejecutarla.
  • Optimizar el orden de las operaciones.
  • Evitar operaciones innecesarias (como c谩lculos duplicados).

Un DAG no es m谩s que una estructura de nodos y flechas donde cada nodo representa una operaci贸n, y las flechas muestran la dependencia entre ellas.


Modo de ejecuci贸n: etapas y tareas

Al ejecutar una acci贸n (como .count() o .collect()), Spark:

  1. Construye un DAG a partir de las transformaciones encadenadas.
  2. Divide el DAG en etapas (stages), donde cada etapa puede ser ejecutada en paralelo.
  3. Dentro de cada etapa, genera m煤ltiples tareas (tasks), una por cada partici贸n.
  4. Env铆a estas tareas a los executors, los cuales las procesan y devuelven los resultados al driver.

Ejemplo de ejecuci贸n

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("EjemploDAG").getOrCreate()
df = spark.read.csv("data/ventas.csv", header=True, inferSchema=True)

df_filtrado = df.filter(df["monto"] > 1000)
df_filtrado.select("cliente", "monto").show()

En este ejemplo:

  • El DAG se construye con .filter() y .select().
  • La acci贸n .show() dispara la ejecuci贸n.
  • Spark calcula el plan 贸ptimo, lo divide en etapas y ejecuta en paralelo.

Referencias 煤tiles


Conclusi贸n

La arquitectura de Spark est谩 pensada para escalar y optimizar autom谩ticamente las operaciones sobre grandes vol煤menes de datos. Comprender c贸mo se distribuye el trabajo entre el driver, el cluster manager y los executors te ayudar谩 a escribir c贸digo m谩s eficiente y depurar errores de forma m谩s efectiva.

En el siguiente cap铆tulo aprender谩s c贸mo instalar PySpark en tu entorno local o en la nube, y c贸mo preparar tu entorno de trabajo.