Apache Spark es un motor de procesamiento de datos de código abierto ultrarrápido para aplicaciones de aprendizaje automático e inteligencia artificial, respaldado por la mayor comunidad de código abierto en 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, aprendizaje automático, procesamiento de datos a gran escala y aplicaciones de inteligencia artificial (IA) .
Analytics Engine de Spark procesa datos de 10 a 100 veces más rápido que algunas alternativas, como Hadoop (el enlace se encuentra fuera de ibm.com) para 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.
Conozca los beneficios clave de la IA generativa y cómo las organizaciones pueden incorporar la IA generativa y el aprendizaje automático en su negocio.
Regístrese para obtener el libro electrónico sobre almacenes de datos de IA
Apache Spark tiene una arquitectura jerárquica maestro/esclavo. Spark Driver es el nodo maestro que controla el administrador del clúster, que nodos los nodos de trabajador (esclavos) y entrega los resultados de los datos al cliente de la aplicación.
Basado en el código de la aplicación, Spark Driver genera el SparkContext, que trabaja con el administrador de clústeres, el administrador de clústeres independiente de Spark u otros administradores de clústeres como Hadoop YARN, Kubernetes o Mesos, para distribuir y supervisar la ejecución en los nodos. También crea conjuntos de datos distribuidos resistentes (RDD), que son la clave de la notable velocidad de procesamiento de Spark.
Los conjuntos de datos distribuidos resilientes (RDD) son colecciones de elementos tolerantes a fallas que se pueden distribuir entre varios nodos en 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 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 su persistencia.
Cada conjunto de datos en un RDD se divide en particiones lógicas, que pueden calcularse 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 utilizan para indicar a Apache Spark que aplique el cálculo y devuelva el resultado al controlador.
Spark admite una variedad de acciones y transformaciones en RDD. Esta distribución la realiza Spark, por lo que los usuarios no tienen que preocuparse por calcular la distribución correcta.
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 trabajador en todo el clúster. A medida que Spark actúa y transforma los datos en procesos de ejecución de tareas, el programador DAG facilita la eficiencia al orquestar los nodos de trabajador 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.
Además de los RDD, Spark maneja otros dos tipos de datos: DataFrames y Datasets.
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 ha sido una característica crítica para Spark, ahora está en modo de mantenimiento. Debido a la popularidad de la biblioteca de machine learning de Spark (MLlib), DataFrames ha asumido el papel principal como API principal para MLlib.
Es importante tener esto en cuenta cuando se usa la API de MLlib, ya que los DataFrames brindan 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, por defecto, una colección de objetos JVM robustamente escritos, a diferencia de DataFrames.
Spark SQL permite consultar datos desde DataFrames y almacenes de datos SQL, como Apache Hive. Las consultas de Spark SQL devuelven un DataFrame o Dataset cuando se ejecutan en otro lenguaje.
Spark Core es la base para todo el procesamiento de datos en paralelo 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 de gráficos GraphX. Spark Core y el administrador de clústeres distribuyen datos en el clúster de Spark y los abstraen.
Esta distribución y abstracción hacen que el manejo de Big Data sea muy rápido y fácil de usar.
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 la interacción con datos RDD de manera relacional.
Spark también tiene una API bien documentada para Scala, Java, Python y R. Cada API de lenguaje en Spark tiene sus matices específicos en la forma en que maneja los datos. Los RDD, DataFrames y Datasets están disponibles en cada API de lenguaje. Con API para tal variedad de lenguajes, Spark hace que el procesamiento de Big Data sea accesible para grupos más diversos de personas con experiencia en desarrollo, ciencia de datos y estadísticas.
Spark acelera el desarrollo y las operaciones de diversas maneras. Spark ayudará a los equipos a:
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 aprendizaje automático y el analytics gráfico.
Innove más rápido: las API proporcionan facilidad de uso al manipular datos semi estructurados y transformar datos.
Gestione con facilidad: un motor unificado admite SQL Queries, datos de streaming, aprendizaje automático (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 aprendizaje automático 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 Hadoop (el enlace se encuentra fuera de ibm.com) para cargas de trabajo más pequeñas debido a su avanzado motor informático 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.
Spark tiene varias bibliotecas que amplían las funcionalidade para machine learning, inteligencia artificial (IA) y procesamiento de secuencias.
Una de las funcionalidades críticas de Apache Spark son las capacidades de machine learning disponibles en Spark MLlib. Apache Spark MLlib proporciona una solución lista para usar para realizar clasificación y regresión, filtrado colaborativo, agrupamiento, álgebra lineal distribuida, árboles de decisión, bosques aleatorios, árboles potenciados por gradientes, extracción de patrones frecuentes, métricas de evaluación y estadísticas.
Las funcionalidades de MLlib, combinadas con los diversos tipos de datos que Spark puede manejar, hacen de Apache Spark una herramienta indispensable de Big Data.
Además de tener funcionalidades de API, Spark tiene Spark GraphX, una nueva adición a Spark diseñada para resolver problemas de gráficos. GraphX es una abstracción de gráficos que amplía los RDD para gráficos y cálculo paralelo de gráficos. Spark GraphX se integra con bases de datos gráficas que almacenan información de interconectividad o webs de información de conexión, como la de una red social.
Spark Streaming es una extensión de la API central de Spark que permite el procesamiento escalable y tolerante a fallas de flujos 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 analítica de streaming en tiempo real con los algoritmos de procesamiento de gráficos y machine learning de Spark.
Desarrollado sobre el motor de Spark SQL, Spark Streaming también permite el procesamiento por lotes incremental que da como resultado un procesamiento más rápido de los datos transmitidos.
Hadoop
Analytics de big data
"Spark frente a Hadoop" es un término que se busca con frecuencia en la web, pero como se señaló 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 la infraestructura de 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 procesan grandes conjuntos de datos más rápidamente al procesar partes del conjunto de datos en paralelo en grandes grupos de computadoras. Pero donde MapReduce procesa datos en el disco, agregando tiempos de lectura y escritura que ralentizan el procesamiento, Spark realiza cálculos en 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 utilizando YARN, la infraestructura de gestión de recursos y programación de trabajos de Hadoop.
Como se señaló anteriormente, Spark agrega las funcionalidades 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 a Hadoop. Puede procesar datos de Hadoop, incluidos datos de HDFS (el sistema de archivos distribuidos 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).
Analytics Engine es un servicio combinado de Apache Spark y Apache Hadoop para crear aplicaciones analíticas.
Genere confianza y escale la IA en entornos de nube. Capacite a los científicos de datos, desarrolladores y analistas para crear, ejecutar y gestionar modelos de IA, así como para optimizar las decisiones.
Confíe en una infraestructura de clúster de código abierto optimizada para un procesamiento de datos extremadamente rápido y a gran escala.
Despliegue con confianza IBM Spectrum Conductor y otros servicios para un entorno empresarial de múltiples inquilinos, tanto on premises como en la nube
Descubra cómo Spark ayuda a simplificar la tarea desafiante y de gran carga computacional de procesar grandes volúmenes de datos en tiempo real
Conozca las arquitecturas respectivas de Hadoop y Spark y cómo se comparan estas infraestructuras de big data en diferentes escenarios.
Crear el mejor data lake significa elegir el almacenamiento de objetos correcto, un área en la que Apache Spark puede ayudar considerablemente.
Cada tutorial proporciona instrucciones prácticas que ayudan a los desarrolladores a aprender a usar las tecnologías en sus proyectos.
Aprenda cómo transformar sistemas centrales con Apache Spark. Obtenga agilidad, rendimiento y acceso a un ecosistema más amplio.