Arquitectura y Componentes Fundamentales de Apache Spark para Procesamiento Distribuido

Clasificado en Informática

Escrito el en español con un tamaño de 3,04 KB

Introducción a Apache Spark

Spark es un framework de programación distribuida, que ofrece un alto rendimiento tanto para procesamiento por lotes como interactivo. Se diferencia con Hadoop en el uso de operaciones en memoria divididas en varias fases de procesamiento.

Requisitos y Componentes de Ejecución

Para ejecutar aplicaciones distribuidas en un clúster, Spark requiere un administrador de clúster.

Librerías Integradas

Spark lleva incluidas librerías específicas para tratar:

  • Datos estructurados: Spark SQL
  • Streaming de datos: Spark Streaming
  • Machine Learning: MLib
  • Computación sobre grafos: GraphX

El Programa Controlador y el Contexto

El shell Spark es un ejemplo de un programa controlador, proceso que se ejecuta en la máquina virtual de Java y ejecuta la función principal del usuario. Tiene un objeto, SparkContext, que establece una conexión con el administrador del clúster subyacente y coordina todos los procesos dentro de una aplicación Spark.

Nodos de Trabajo y Ejecutores

  • Nodos de trabajo (Workers): Ejecutan el código de la aplicación en un clúster, obedeciendo al programa del controlador.
  • Cada aplicación tiene un conjunto de procesos de ejecutor, que son responsables de administrar el cálculo a través de distintas tareas y el almacenamiento en caché en cada nodo trabajador al mismo tiempo, en función del número de núcleos.

Diferencias entre MapReduce y Spark

Ambos son frameworks escalables y tolerantes a fallos para el procesamiento de Big Data con arquitectura en clúster (múltiples nodos).

El Concepto de RDDs

Los RDDs (Resilient Distributed Datasets) son:

  • Una colección distribuida e inmutable de objetos.
  • Tolerantes a fallos, recreándose los RDD por sí solos en caso de fallo.
  • De solo lectura y particionada.
  • Derivados de una o más fuentes de datos.

Operaciones sobre RDDs

Los RDDs soportan dos tipos de operaciones:

1. Transformaciones

Se ejecutan solo si se invoca una acción sobre un RDD y construyen un nuevo RDD a partir de otro (inmutable):

  • Narrow (Estrechas): Los elementos para procesar una partición están en una misma partición.
  • Wide (Amplias): Involucran datos de varias particiones.
2. Acciones

Calculan un resultado basándose en un RDD existente y lo devuelven a la consola o lo almacenan.

Grafos Acíclicos Dirigidos (DAGs)

Un DAG es el grafo que surge como consecuencia de una acción. Una diferencia clave con MapReduce es que, entre sus estados intermedios, no se escribe a Disco, mientras que en MapReduce sí se realiza esta escritura.

Entradas relacionadas: