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.