¿Qué es Apache Spark?

Vista aérea de la azotea de un edificio

¿Qué es Apache Spark?

Apache Spark es un motor de procesamiento de datos de código abierto ultrarrápido para aplicaciones de machine learning e inteligencia artificial, respaldado por la mayor comunidad de código abierto en big data, diseñado para ofrecer la velocidad, escalabilidad y programabilidad requeridas para big data.

Apache Spark (Spark) maneja fácilmente conjuntos de datos a gran escala y es un sistema de agrupación en clústeres rápido y de uso general muy adecuado para PySpark. Está diseñado para ofrecer la velocidad computacional, la escalabilidad y la programabilidad necesarias para big data, específicamente para transmisión de datos, datos gráficos, analytics, machine learning, procesamiento de datos a gran escala y aplicaciones de inteligencia artificial (IA).

El motor de análisis de Spark procesa los datos 10 a 100 veces más rápido que algunas alternativas, como Hadooppara cargas de trabajo más pequeñas. Se escala distribuyendo flujos de trabajo de procesamiento en grandes clústeres de computadoras, con paralelismo incorporado y tolerancia a fallas. Incluso incluye API para lenguajes de programación que son populares entre analistas de datos y científicos de datos, incluidos Scala, Java, Python y R.

Spark a menudo se compara con Apache Hadoop, y específicamente con Hadoop MapReduce, el componente nativo de procesamiento de datos de Hadoop. La principal diferencia entre Spark y MapReduce es que Spark procesa y mantiene los datos en la memoria para pasos posteriores, sin escribir ni leer a partir del disco, lo que da como resultado velocidades de procesamiento mucho más rápidas. (En otras partes de este artículo, usted encontrará más información sobre cómo Spark se compara y complementa Hadoop).

Spark se desarrolló en 2009 en AMPLab de UC Berkeley. Hoy en día, Apache Software Foundation lo mantiene y cuenta con la mayor comunidad de código abierto en big data, con más de 1,000 colaboradores. También se incluye como componente central de varias ofertas comerciales de big data.

Diseño 3D de pelotas rodando en una pista

Las últimas novedades e insights sobre IA

Descubra insights y noticias de expertos sobre IA, la nube y mucho más en el boletín semanal Think. 

¿Cómo funciona Apache Spark?

Apache Spark tiene una arquitectura jerárquica primaria/secundaria. El controlador Spark es el nodo principal que controla el administrador del clúster, que gestiona los nodos secundarios y entrega los resultados de los datos al cliente de la aplicación.

De acuerdo con el código de la aplicación, el controlador Spark genera el SparkContext, que funciona con el administrador de clústeres, ya sea el administrador de clústeres independiente de Spark u otros administradores de clústeres como Hadoop YARN, Kubernetes o Mesos, para distribuir y monitorear la ejecución en los nodos. También crea conjuntos de datos resilientes distribuidos (RDD), que son la clave de la notable velocidad de procesamiento de Spark.

Conjunto de datos resilientes distribuidos (RDD)

Los conjuntos de datos resilientes distribuidos (RDD) son colecciones de elementos tolerantes a fallas que se pueden distribuir entre varios nodos de un clúster y trabajar en paralelo. Los RDD son una estructura fundamental en Apache Spark.

Spark carga datos haciendo referencia a una fuente de datos o paralelizando una colección existente con el método de paralelización SparkContext de almacenamiento en caché de datos en un RDD para su procesamiento. Una vez que los datos se cargan en un RDD, Spark realiza transformaciones y acciones en los RDD en la memoria, la clave de la velocidad de Spark. Spark también almacena los datos en la memoria a menos que el sistema se quede sin memoria o el usuario decida escribir los datos en el disco para persistencia.

Cada conjunto de datos en un RDD se divide en particiones lógicas, que pueden calcular en diferentes nodos del clúster. Y los usuarios pueden realizar dos tipos de operaciones RDD: transformaciones y acciones. Las transformaciones son operaciones aplicadas para crear un nuevo RDD. Las acciones se emplean para indicarle a Apache Spark que aplique el cálculo y devuelva el resultado al controlador.

Spark admite una variedad de acciones y transformaciones en RDD. Spark realiza la distribución, por lo que los usuarios no tienen que preocuparse por calcular la distribución correcta.

Gráfico acíclico dirigido (DAG)

A diferencia del proceso de ejecución de dos etapas en MapReduce, Spark crea un gráfico acíclico dirigido (DAG) para programar tareas y la orquestación de nodos de trabajo en todo el clúster. A medida que Spark actúa y transforma los datos en los procesos de ejecución de tareas, el programador de DAG facilita la eficiencia al orquestar los nodos de trabajo en todo el clúster. Este seguimiento de tareas hace posible la tolerancia a fallas, ya que vuelve a aplicar las operaciones registradas a los datos de un estado anterior.

DataFrames y conjuntos de datos

Además de los RDD, Spark maneja otros dos tipos de datos: DataFrames y conjuntos de datos.

Los DataFrames son las interfaces de programación de aplicaciones (API) estructuradas más comunes y representan una tabla de datos con filas y columnas. Aunque RDD fue una característica crítica para Spark, ahora se encuentra en modo de mantenimiento. Debido a la popularidad de la biblioteca de aprendizaje automático (MLlib) de Spark, DataFrames asumió el papel principal como API principal para MLlib (un conjunto de algoritmos de aprendizaje automático para escalabilidad más herramientas para la selección de funciones y la creación de canales de aprendizaje automático). Es importante tener esto en cuenta al emplear la API MLlib, ya que los DataFrames proporcionan uniformidad en los diferentes lenguajes, como Scala, Java, Python y R.

Los conjuntos de datos son una extensión de DataFrames que proporcionan una interfaz de programación orientada a objetos y con seguridad de tipos. Los conjuntos de datos son, de forma predeterminada, una colección de objetos JVM fuertemente establecidos, a diferencia de los DataFrames.

Spark SQL permite consultar datos desde DataFrames y almacenes de datos SQL, como Apache Hive. Las consultas Spark SQL devuelven un DataFrame o un conjunto de datos cuando se ejecutan dentro de otro lenguaje.

Spark Core

Spark Core es la base para todo el procesamiento paralelo de datos y maneja la programación, optimización, RDD y abstracción de datos. Spark Core proporciona la base funcional para las bibliotecas Spark, Spark SQL, Spark Streaming, la biblioteca de machine learning MLLib y el procesamiento de datos gráficos GraphX. El Spark Core y el administrador de clústeres distribuyen los datos en todo el clúster de Spark y los abstraen. Esta distribución y abstracción hacen que el manejo del Big Data sea muy rápido y fácil de usar.

API de Spark

Spark incluye una variedad de interfaces de programación de aplicaciones (API) para llevar el poder de Spark a la audiencia más amplia. Spark SQL permite interactuar con datos RDD de forma relacional. Spark también cuenta con una API bien documentada para Scala, Java, Python y R. La API de cada lenguaje en Spark tiene sus matices específicos en cuanto a la forma en que maneja los datos. Los RDD, DataFrames y conjuntos de datos están disponibles en la API de cada idioma. Con API para tal variedad de lenguajes, Spark hace accesible el procesamiento de big data a grupos más diversos de personas con formación en desarrollo, ciencia de datos, ingeniería de datos y estadística.

Think 2025

Aproveche la nube híbrida para potenciar el valor de la IA a escala

Descubra cómo una arquitectura híbrida bien diseñada unifica los datos, se beneficia de la computación de alto rendimiento y mejora la seguridad para ayudarle a alcanzar el éxito con la IA a escala.

Beneficios de Apache Spark 

Spark acelera el desarrollo y las operaciones de diversas maneras. Spark ayudará a los equipos:

  • Acelere el desarrollo de aplicaciones
  • Innove más rápido
  • Gestione con facilidad
  • Optimice con tecnologías abiertas
  • Procese más rápido
  • Velocidad de acceso a la memoria

 

Acelere el desarrollo de aplicaciones


Los modelos de programación Streaming y SQL de Apache Spark respaldados por MLlib y GraphX facilitan la creación de aplicaciones que aprovechan el machine learning y los analytics gráficos.

Innove más rápido
 

API proporcionan facilidad de uso al manipular datos semiestructurados y transformar datos.

Gestione con facilidad


Un motor unificado admite SQL Queries, datos de streaming, machine learning (ML) y procesamiento de gráficos.

Optimice con tecnologías abiertas
 

OpenPOWER Foundation permite GPU, CAPI Flash, RDMA, aceleramiento de FPGA e innovación de machine learning para optimizar el rendimiento de las cargas de trabajo de Apache Spark.

Procese más rápido


Spark puede ser 100 veces más rápido que Hadooppara cargas de trabajo más pequeñas debido a su avanzado motor de computación en memoria y almacenamiento de datos en disco.

Velocidad de acceso a la memoria


Spark se puede usar para crear un espacio de memoria grande para el procesamiento de datos, lo que permite a los usuarios más avanzados acceder a los datos a través de interfaces mediante Python, R y Spark SQL.

Apache Spark y aprendizaje automático

Spark tiene varias bibliotecas que amplían las capacidades al machine learning, la inteligencia artificial (IA) y el procesamiento de transmisiones. Estas son algunas:

  • Apache Spark  MLlib
  • Spark GraphX
  • Spark Streaming

Apache Spark MLlib

Una de las capacidades críticas de Apache Spark son las capacidades de machine learning disponibles en Spark MLLib, que proporciona una solución lista para usarse y realizar clasificación y regresión, filtrado colaborativo, clustering, álgebra lineal distribuida, decision trees, bosques aleatorios, árboles potenciados por gradientes, minería de patrones frecuentes, métricas de evaluación y estadísticas. Las capacidades de MLLib, combinadas con los diversos tipos de datos, hacen de Apache Spark una herramienta indispensable de big data.

Spark GraphX

Además de tener capacidades API, Spark GraphX está diseñado para resolver problemas gráficos. GraphX es una abstracción de gráficos que extiende los RDD para gráficos y cálculo paralelo de gráficos. Spark GraphX se integra con bases de datos de gráficos que almacenan información de interconectividad o redes de información de conexión, como la de una red social.

Spark Streaming

Spark Streaming es una extensión de la API principal de Spark que permite el procesamiento escalable y tolerante a fallas de transmisiones de datos en vivo. A medida que Spark Streaming procesa datos, puede enviar datos a sistemas de archivos, bases de datos y paneles en vivo para streaming analytics en tiempo real con los algoritmos de machine learning y procesamiento de gráficos de Spark. Construido con base en el motor Spark SQL, Spark Streaming también permite el procesamiento incremental por lotes que da como resultado un procesamiento más rápido de los datos transmitidos.

Spark frente a Apache Hadoop y MapReduce

“Spark vs. Hadoop” es un término de búsqueda frecuente en la web, pero como se mencionó anteriormente, Spark es más una mejora de Hadoop, y más específicamente, del componente de procesamiento de datos nativo de Hadoop, MapReduce. De hecho, Spark se basa en el marco MapReduce y, en la actualidad, la mayoría de las distribuciones de Hadoop incluyen Spark.

Al igual que Spark, MapReduce permite a los programadores escribir aplicaciones que procesen grandes conjuntos de datos más rápido al procesar partes del conjunto de datos de manera paralela en grandes grupos de computadoras. Pero mientras MapReduce procesa datos en el disco, lo cual agrega tiempos de lectura y escritura que ralentizan el procesamiento, Spark realiza cálculos en la memoria, que es mucho más rápido. Como resultado, Spark puede procesar datos hasta 100 veces más rápido que MapReduce.

Las API integradas de Spark para varios lenguajes lo hacen más práctico y accesible para los desarrolladores que MapReduce, que tiene la reputación de ser difícil de programar. A diferencia de MapReduce, Spark puede ejecutar aplicaciones de procesamiento de flujo en clústeres de Hadoop empleando YARN, el marco de gestión de recursos y programación de trabajos de Hadoop. Como se señaló anteriormente, Spark agrega las capacidades de MLlib, GraphX y SparkSQL. Y Spark puede manejar datos de otras fuentes de datos fuera de la aplicación Hadoop, incluido Apache Kafka.

De lo contrario, Spark es compatible y complementario con Hadoop. Puede procesar datos de Hadoop, incluidos datos de HDFS (el sistema de archivos distribuido de Hadoop), HBase (una base de datos no relacional que se ejecuta en HDFS), Apache Cassandra (una alternativa NoSQL a HDFS) y Hive (un almacén de datos basado en Hadoop).

Soluciones relacionadas
IBM Z Operational Log and Data Analytics 

Acelera la identificación de incidentes híbridos con analytics operativos casi en tiempo real.

Conozca IBM Z
Soluciones de analytics en la nube

Desbloquee Resultados que cambian el negocio con soluciones de analytics en la nube que le permiten analizar datos fácilmente y crear modelos de machine learning.

Explorar las soluciones de analytics en la nube
Servicios de consultoría en la nube

Descubra nuevas capacidades e impulse la agilidad del negocio con los servicios de consultoría en la nube de IBM.

Explore los servicios de consultoría en la nube
Dé el siguiente paso

Desbloquee insights en tiempo real de sus datos de IBM Z con potentes analytics que unen el mainframe y la nube, para que pueda actuar más rápido, reducir el riesgo e impulsar decisiones más inteligentes.

  1. Conozca IBM Z
  2. Más información