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.
Apache Spark (Spark) gestiona fácilmente conjuntos de datos a gran escala y es un sistema de agrupación rápido y de uso general que se adapta bien a PySpark. Está diseñado para ofrecer la velocidad computacional, la escalabilidad y la programabilidad necesarias para big data, específicamente para la transmisión de datos, datos gráficos, análisis, machine learning, procesamiento de datos a gran escala y aplicaciones de inteligencia artificial (IA).
El motor de análisis de Spark procesa los datos de 10 a 100 veces más rápido que algunas alternativas, como Hadoop (enlace externo a ibm.com) para cargas de trabajo más pequeñas. Escala distribuyendo los flujos de trabajo de procesamiento entre grandes clusters de ordenadores, con paralelismo y tolerancia a fallos incorporados. Incluso incluye API para lenguajes de programación que son populares entre los analistas de datos y científicos de datos, incluidos Scala, Java, Python y R.
Spark se compara a menudo con Apache Hadoop y, en concreto, con Hadoop MapReduce, el componente de procesamiento de datos nativo de Hadoop. La principal diferencia entre Spark y MapReduce es que Spark procesa y conserva los datos en la memoria para los pasos posteriores, sin escribir ni leer en el disco, lo que da como resultado velocidades de procesamiento mucho más rápidas. (Encontrará más información sobre cómo Spark se compara y complementa con Hadoop en otra parte de este artículo).
Spark fue desarrollado en 2009 en el AMPLab de UC Berkeley. En la actualidad, su mantenimiento corre a cargo de la Apache Software Foundation y cuenta con la mayor comunidad de código abierto en el ámbito de big data, con más de 1000 colaboradores. También se incluye como un 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 machine learning en su negocio.
Regístrese para obtener el libro electrónico sobre almacenes de datos de IA
Apache Spark tiene una arquitectura jerárquica principal/secundaria. El Spark Driver es el nodo principal que controla el administrador de clústeres, que administra los nodos secundarios y entrega los resultados de los datos al cliente de la aplicación.
Basándose en el código de la aplicación, Spark Driver genera el SparkContext, que funciona con el gestor de clústeres - Standalone Cluster Manager de Spark u otros gestores de clústeres como Hadoop YARN, Kubernetes o Mesos, para distribuir y monitorizar la ejecución en todos los nodos. También crea conjuntos de datos distribuidos resistentes (RDD), que son la clave de la notable velocidad de procesamiento de Spark.
Los conjunto de datos distribuidos resilientes (RDD) son conjuntos de elementos tolerantes a fallos 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 SparkContext parallelize 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 su persistencia.
Cada conjunto de datos de un RDD se divide en particiones lógicas, que se 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 que se aplican para crear un nuevo RDD. Las acciones se usan 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 de calcular la distribución correcta.
A diferencia del proceso de ejecución en dos fases de MapReduce, Spark crea un gráfico acíclico dirigido (DAG) para programar las tareas y la orquestación de los 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 eficacia mediante la orquestación de los nodos de trabajo en todo el clúster. Este seguimiento de tareas hace posible la tolerancia a fallos, ya que vuelve a aplicar las operaciones registradas a los datos de un estado anterior.
Además de los RDD, Spark gestiona 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 crucial 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 de MLlib (un conjunto de algoritmos de machine learning para la escalabilidad, además de herramientas para la selección de características y la creación de canalizaciones de ML). Es importante tener esto en cuenta cuando se usa la API de MLlib, ya que los DataFrames proporcionan uniformidad en los distintos 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 tipados, a diferencia de los DataFrames.
Spark SQL permite consultar datos desde DataFrames y almacenes de datos SQL, como Apache Hive. Las consultas SQL de Spark devuelven un DataFrame o un conjunto de datos cuando se ejecutan en otro lenguaje.
Spark Core es la base de todo el procesamiento de datos paralelos y gestiona la programación, optimización, RDD y abstracción de datos. Spark Core proporciona la base funcional para las bibliotecas de Spark, Spark SQL, Spark Streaming, la biblioteca de machine learning MLlib y el procesamiento de datos de gráficos de GraphX. El Spark Core y el gestor de clústeres distribuyen los datos por el clúster Spark y los abstraen. Esta distribución y abstracción hacen que la gestión de Big Data sea muy rápida y fácil de usar.
Spark incluye una variedad de interfaces de programación de aplicaciones (API) para llevar el poder de Spark al público más amplio. Spark SQL permite la interacción con los 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 Datasets están disponibles en la API de cada idioma. Con API para tal variedad de idiomas, Spark hace que el procesamiento de big data sea accesible a grupos más diversos de personas con orígenes en desarrollo, ciencia de datos, ingeniería 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 de streaming y SQL de Apache Sparks, respaldados por MLlib y GraphX, facilitan la creación de aplicaciones que aprovechan el machine learning y el análisis de gráficos.
Innove más rápido: las API proporcionan facilidad de uso al manipular datos semiestructurados y transformar datos.
Administre con facilidad: un motor unificado admite consultas SQL, transmisión de datos, machine learning (ML) y procesamiento de gráficos.
Optimice con tecnologías abiertas: OpenPOWER Foundation permite la aceleración de GPU, CAPI Flash, RDMA, FPGA y la innovación en machine learning para optimizar el rendimiento de las cargas de trabajo de Apache Spark.
Proceso más rápido: Spark puede ser 100 veces más rápido que Hadoop (enlace externo a ibm.com) para cargas de trabajo más pequeñas debido a su avanzado motor de computación en memoria y almacenamiento de datos en disco.
Acelerar el acceso a la memoria: Spark se puede utilizar 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 utilizando Python, R y Spark SQL.
Spark tiene varias bibliotecas que amplían las capacidades al machine learning, la inteligencia artificial (IA) y el procesamiento de flujos.
Una de las capacidades cruciales de Apache Spark son las capacidades de machine learning disponibles en Spark MLlib, que proporciona una solución lista para usar para realizar clasificación y regresión, filtrado colaborativo, agrupación en clústeres, álgebra lineal distribuida, árboles de decisión, bosques aleatorios, árboles potenciados por gradiente, minería de patrones frecuente, 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 de big data indispensable.
Además de tener funcionalidades de API, Spark GraphX está diseñado 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 de grafos-paralelos. 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 es una extensión de la API principal de Spark que permite el procesamiento escalable y tolerante a errores de flujos de datos en directo. A medida que Spark Streaming procesa datos, puede entregar datos a sistemas de archivos, bases de datos y paneles de control en directo para el análisis de transmisión en tiempo real con los algoritmos de procesamiento de gráficos y machine learning de Spark. Basado en el motor de 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.
Hadoop
Análisis de big data
“Spark vs. Hadoop” es un término que se busca con frecuencia en la web, pero como se mencionó anteriormente, Spark es más bien 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, hoy en día, la mayoría de las distribuciones de Hadoop incluyen Spark.
Al igual que Spark, MapReduce permite a los programadores escribir aplicaciones que procesan conjuntos de datos enormes con mayor rapidez procesando partes del conjunto de datos en paralelo a través de grandes clústeres de ordenadores. Pero cuando MapReduce procesa los datos en el disco, agregando 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 idiomas 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 flujos en clústeres Hadoop utilizando YARN, el marco de gestión de recursos y programación de trabajos de Hadoop. Como se indicó anteriormente, Spark agrega las funcionalidades de MLlib, GraphX y SparkSQL. Y Spark puede gestionar datos de otras fuentes de datos fuera de la aplicación Hadoop, incluido Apache Kafka.
De lo contrario, Spark es compatible con Hadoop y complementario. Puede procesar datos de Hadoop, incluidos los 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).
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 administrar modelos de IA y optimizar las decisiones.
Confíe en un marco de computación en clúster, optimizado para el proceso de datos extremadamente rápido y a gran escala.
Implemente con confianza IBM Spectrum Conductor y otros servicios para un entorno empresarial multiinquilino, tanto en las instalaciones como en la nube.
Descubra cómo Spark ayuda a simplificar la difícil tarea de procesar grandes volúmenes de datos en tiempo real.
Obtenga información sobre las arquitecturas respectivas de Hadoop y Spark y cómo se comparan estos marcos de big data en diferentes escenarios.
Conozca los beneficios clave de la IA generativa y cómo las organizaciones pueden incorporar la IA generativa y el machine learning en su negocio.
Cada tutorial proporciona instrucciones prácticas prácticas que ayudan a los desarrolladores a utilizar las tecnologías en sus proyectos.
Aprenda a transformar los sistemas principales con Apache Spark. Obtenga agilidad, rendimiento y acceso a un ecosistema más amplio.