Apache Spark
leadspace en la nube
¿Qué es Apache Spark?

Apache Spark es un motor de procesamiento de datos de código abierto ultrarrápido para aplicaciones de inteligencia artificial y aprendizaje automático, respaldado por la comunidad de código abierto más grande en big data.

Apache Spark (Spark) es un motor de procesamiento de datos de código abierto para grandes conjuntos de datos. Está diseñado para ofrecer la velocidad computacional, la escalabilidad y la capacidad de programación necesarias para Big Data, específicamente para la transmisión de datos, datos de gráficos, aprendizaje automático y aplicaciones de inteligencia artificial (IA).

El motor de análisis de Spark procesa datos de 10 a 100 veces más rápido que las alternativas. Se escala distribuyendo el trabajo de procesamiento en grandes grupos de computadoras, con paralelismo incorporado y tolerancia a fallas. Incluso incluye API para lenguajes de programación que son populares entre los analistas de datos y los científicos de datos, incluido Scala,Java , Python y R.

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

Spark se desarrolló en 2009 en UC Berkeley. En la actualidad, es mantenido por Apache Software Foundation y cuenta con la comunidad de código abierto más grande en big data, con más de 1,000 colaboradores. También se incluye como un componente central de varias ofertas comerciales de big data.

Crear el mejor lago de datos significa elegir el almacenamiento de objetos correcto, un área en la que Apache Spark puede ayudar considerablemente.

Vea el e-book (15,6 MB)


Cómo funciona Apache Spark

Apache Spark tiene una arquitectura maestro / esclavo jerárquica. Spark Driver es el nodo maestro que controla el administrador del clúster, que administra los nodos trabajadores (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 elSparkContext, 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.

Conjunto de datos distribuidos resilientes (RDD)

 

Los conjuntos de datos distribuidos resistentes (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 RDDtransformaciones y accionesLas transformaciones son operaciones aplicadas para crear un nuevo RDDLas 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.

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 trabajadores 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 DAG facilita la eficiencia al orquestar los nodos trabajadores 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 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 aprendizaje automático 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 idioma.

Spark Core

 

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 aprendizaje automático 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.

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 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 una variedad de lenguajes, Spark hace grande  El procesamiento de datos es accesible para grupos más diversos de personas con experiencia en desarrollo, ciencia de datos y estadísticas.

Productos destacados

Analytics Engine


Apache Spark y aprendizaje automático

Spark tiene varias bibliotecas que amplían las capacidades paraaprendizaje automático, inteligencia artificial (IA) y procesamiento de stream.

Apache Spark  MLlib

 

Una de las capacidades críticas de Apache Spark son las capacidades de aprendizaje automático 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 capacidades de MLlib, combinadas con los diversos tipos de datos que Spark puede manejar, hacen de Apache Spark una herramienta indispensable de Big Data.

Spark GraphX

 

Además de tener capacidades 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

 

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 análisis de transmisión en tiempo real con los algoritmos de procesamiento de gráficos y aprendizaje automático de Spark. Construido sobre el motor 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.

Enlaces relacionados

Hadoop

Analítica de Big Data


Spark vs. Apache Hadoop y MapReduce

"Spark vs. 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 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 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 enmemoria , 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 flujo en clústeres de Hadoop utilizando 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, incluidoApache Kafka .

De lo contrario, Spark es compatible y complementario a 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 (unNoSQL alternativa a HDFS) y Hive (un software basado en almacén de datos Hadoop ).


Apache Spark e IBM Cloud

Spark es una herramienta poderosa para agregar a una solución de datos empresariales para ayudar con Big Análisis de datos oAIOps . También se integra bien con las soluciones de Big Data de IBM existentes.

IBM Spectrum Conductor es unplataforma multiinquilino para implementar y administrar Apache Spark otros marcos de aplicaciones en un clúster compartido común de recursos. Spectrum Conductor ofrece administración de carga de trabajo, monitoreo, alertas, informes y diagnósticos y puede ejecutar múltiples versiones actuales y diferentes de Spark y otros marcos al mismo tiempo. Los usuarios pueden implementar y mantener Apache Spark fácilmente con una distribución Spark integrada.

IBM Watson se puede agregar a la combinación para permitir la creación de entornos de inteligencia artificial, aprendizaje automático y aprendizaje profundo. IBM Watson proporciona un flujo de trabajo, servicios y soporte de un extremo a otro para garantizar que sus científicos de datos puedan concentrarse en ajustar y entrenar las capacidades de IA de una aplicación Spark.

IBM Analytics Engine le permite crear una única solución de análisis avanzado con Apache Spark y Hadoop. IBM Analytics Engine permite a los usuarios almacenar datos en una capa de almacenamiento de objetos, comoAlmacenamiento de objetos de IBM Cloud , solo ofrece grupos de notas informáticas cuando es necesario para ayudar con la flexibilidad, escalabilidad y capacidad de mantenimiento de las plataformas de análisis de Big Data.

Para comenzar, regístrese para obtener un IBMid ycree su cuenta de IBM Cloud .


Soluciones relacionadas

AIOps

Conozca AIOps, un área que aprovecha la analítica, la inteligencia artificial y otras tecnologías para hacer que las operaciones de TI sean más eficientes y efectivas.


IBM Spectrum Conductor

Implemente con confianza IBM Spectrum Conductor y otros servicios para un entorno empresarial multi-inquilino, local o en la nube.


Arquitectura de software multiinquilino

Obtenga más información sobre la arquitectura de software de multiinquilino, que permite a varios usuarios compartir una sola instancia de una aplicación de software y sus recursos.


IA para empresas

El portafolio de IBM de herramientas, aplicaciones y soluciones preparadas para la empresa, diseñado para reducir los costos y los obstáculos de la adopción de IA, además de optimizar los resultados y el uso responsable de la IA.


IBM Analytics Engine

Analytics Engine es un servicio combinado de Apache Spark y Apache Hadoop para crear aplicaciones analíticas.


Almacenamiento de objetos en la nube

Almacenamiento en nube flexible, rentable y escalable para datos no estructurados.