Apache Spark - Introducción

Las industrias están usando Hadoop de manera extensiva para analizar sus conjuntos de datos. La razón es que el marco Hadoop se basa en un modelo de programación simple (MapReduce) y permite una solución informática que es escalable, flexible, tolerante a fallas y rentable. Aquí, la principal preocupación es mantener la velocidad en el procesamiento de grandes conjuntos de datos en términos de tiempo de espera entre consultas y tiempo de espera para ejecutar el programa.

Spark fue presentado por Apache Software Foundation para acelerar el proceso de software de computación computacional Hadoop.

En contra de una creencia común, Spark is not a modified version of Hadoopy, en realidad, no depende de Hadoop porque tiene su propia gestión de clústeres. Hadoop es solo una de las formas de implementar Spark.

Spark usa Hadoop de dos formas: una es storage y el segundo es processing. Dado que Spark tiene su propio cálculo de administración de clústeres, usa Hadoop solo con fines de almacenamiento.

Apache Spark

Apache Spark es una tecnología de computación en clúster ultrarrápida, diseñada para una computación rápida. Se basa en Hadoop MapReduce y extiende el modelo MapReduce para usarlo de manera eficiente para más tipos de cálculos, que incluyen consultas interactivas y procesamiento de flujo. La característica principal de Spark es suin-memory cluster computing que aumenta la velocidad de procesamiento de una aplicación.

Spark está diseñado para cubrir una amplia gama de cargas de trabajo, como aplicaciones por lotes, algoritmos iterativos, consultas interactivas y transmisión. Además de admitir todas estas cargas de trabajo en un sistema respectivo, reduce la carga administrativa de mantener herramientas separadas.

Evolución de Apache Spark

Spark es uno de los subproyectos de Hadoop desarrollado en 2009 en el AMPLab de UC Berkeley por Matei Zaharia. Fue de código abierto en 2010 bajo una licencia BSD. Fue donado a la fundación de software Apache en 2013, y ahora Apache Spark se ha convertido en un proyecto de Apache de alto nivel desde febrero de 2014.

Características de Apache Spark

Apache Spark tiene las siguientes características.

  • Speed- Spark ayuda a ejecutar una aplicación en el clúster de Hadoop, hasta 100 veces más rápido en memoria y 10 veces más rápido cuando se ejecuta en disco. Esto es posible reduciendo el número de operaciones de lectura / escritura en el disco. Almacena los datos de procesamiento intermedio en la memoria.

  • Supports multiple languages- Spark proporciona API integradas en Java, Scala o Python. Por lo tanto, puede escribir aplicaciones en diferentes idiomas. Spark presenta 80 operadores de alto nivel para consultas interactivas.

  • Advanced Analytics- Spark no solo es compatible con 'Map' y 'reduce'. También admite consultas SQL, transmisión de datos, aprendizaje automático (ML) y algoritmos de gráficos.

Spark construido en Hadoop

El siguiente diagrama muestra tres formas de construir Spark con componentes de Hadoop.

Hay tres formas de implementación de Spark, como se explica a continuación.

  • Standalone- La implementación independiente de Spark significa que Spark ocupa el lugar en la parte superior de HDFS (sistema de archivos distribuido de Hadoop) y el espacio se asigna para HDFS, explícitamente. Aquí, Spark y MapReduce se ejecutarán uno al lado del otro para cubrir todos los trabajos de Spark en el clúster.

  • Hadoop Yarn- La implementación de Hadoop Yarn significa, simplemente, Spark se ejecuta en Yarn sin necesidad de preinstalación o acceso de root. Ayuda a integrar Spark en el ecosistema de Hadoop o la pila de Hadoop. Permite que otros componentes se ejecuten en la parte superior de la pila.

  • Spark in MapReduce (SIMR)- Spark en MapReduce se usa para iniciar el trabajo de Spark además de la implementación independiente. Con SIMR, el usuario puede iniciar Spark y usar su shell sin ningún acceso administrativo.

Componentes de Spark

La siguiente ilustración muestra los diferentes componentes de Spark.

Apache Spark Core

Spark Core es el motor de ejecución general subyacente para la plataforma Spark sobre el que se basan todas las demás funciones. Proporciona computación en memoria y conjuntos de datos de referencia en sistemas de almacenamiento externos.

Spark SQL

Spark SQL es un componente en la parte superior de Spark Core que presenta una nueva abstracción de datos llamada SchemaRDD, que brinda soporte para datos estructurados y semiestructurados.

Spark Streaming

Spark Streaming aprovecha la capacidad de programación rápida de Spark Core para realizar análisis de transmisión. Ingesta datos en mini-lotes y realiza transformaciones RDD (Resilient Distributed Datasets) en esos mini-lotes de datos.

MLlib (biblioteca de aprendizaje automático)

MLlib es un marco de aprendizaje automático distribuido por encima de Spark debido a la arquitectura Spark basada en memoria distribuida. Según los puntos de referencia, los desarrolladores de MLlib lo hacen frente a las implementaciones de los mínimos cuadrados alternos (ALS). Spark MLlib es nueve veces más rápido que la versión basada en disco de Hadoop deApache Mahout (antes de que Mahout obtuviera una interfaz Spark).

GraphX

GraphX ​​es un marco de procesamiento de gráficos distribuido sobre Spark. Proporciona una API para expresar el cálculo de gráficos que puede modelar los gráficos definidos por el usuario mediante la API de abstracción de Pregel. También proporciona un tiempo de ejecución optimizado para esta abstracción.