Qué es Apache Spark en Azure HDInsight

Apache Spark es una plataforma de procesamiento paralelo que admite el procesamiento en memoria para mejorar el rendimiento de aplicaciones de análisis de macrodatos. Apache Spark en Azure HDInsight es la implementación de Microsoft de Apache Spark en la nube, y es una de las varias ofertas de Spark en Azure.

  • Apache Spark en Azure HDInsight facilita la creación y configuración de clústeres de Spark, lo que le permite personalizar y usar un entorno completo de Spark en Azure.

  • Los grupos de Spark Azure Synapse Analytics usan grupos de Spark administrados para permitir que los datos se carguen, modelen, procesen y distribuyen para obtener información analítica en Azure.

  • Apache Spark en Azure Databricks usa clústeres de Spark para proporcionar un área de trabajo interactiva que permita la colaboración entre los usuarios para leer datos de varios orígenes de datos y convertirlos en conclusiones innovadoras.

  • Las actividades de Spark Azure Data Factory permiten usar análisis de Spark en la canalización de datos, mediante clústeres de Spark a petición o existentes previamente.

Con Apache Spark en Azure HDInsight, puede almacenar y procesar los datos dentro de Azure. Los clústeres de Spark en HDInsight son compatibles con Azure Blob Storage, Azure Data Lake Storage Gen1 o Azure Data Lake Storage Gen2, lo que le permite aplicar el procesamiento de Spark en los almacenes de datos existentes.

Spark: a unified framework.

Para empezar a trabajar con Apache Spark en Azure HDInsight, siga nuestro tutorial para crear clústeres de HDInsight Spark.

Para obtener información sobre Apache Spark y cómo interactúa con Azure, siga leyendo el artículo siguiente.

Para conocer los componentes y la información de versiones, consulte el artículo ¿Cuáles son los componentes y versiones de Apache Hadoop disponibles con HDInsight?.

¿Qué es Apache Spark?

Spark proporciona primitivas de computación de clúster en memoria. Un trabajo de Spark puede cargar y almacenar en la memoria caché datos, y repetir consultas sobre ellos. La informática en memoria es mucho más rápida que las aplicaciones basadas en disco, como Hadoop, que comparten datos mediante el sistema de archivos distribuido de Hadoop. Spark también se integra en el lenguaje de programación de Scala para que pueda manipular conjuntos de datos distribuidos como colecciones locales. No se necesita estructurar todo como operaciones de asignación y reducción.

Traditional MapReduce vs. Spark.

Los clústeres de Spark en HDInsight ofrecen un servicio de Spark completamente administrado. Aquí se enumeran las ventajas de crear un clúster de Spark en HDInsight.

Característica Descripción
Creación sencilla Puede crear un clúster de Spark en HDInsight en cuestión de minutos mediante Azure Portal, Azure PowerShell o el SDK de .NET de HDInsight. Consulte Introducción al clúster de Apache Spark en HDInsight.
Facilidad de uso El clúster de Spark en HDInsight incluye cuadernos de Jupyter Notebook y cuadernos de Apache Zeppelin. Puede usar estos notebooks para el procesamiento y la visualización de datos interactivos. Consulte Uso de cuadernos de Apache Zeppelin con un clúster de Apache Spark y Carga de datos y ejecución de consultas en un clúster de Apache Spark.
API de REST Los clústeres de Spark en HDInsight incluyen Apache Livy, un servidor de trabajos de Spark basado en una API REST para enviar y supervisar trabajos de forma remota. Consulte Uso de la API REST de Apache Spark para enviar trabajos remotos a un clúster de HDInsight Spark.
Compatibilidad con Azure Storage Los clústeres de Spark en HDInsight pueden usar Azure Data Lake Storage Gen1/Gen2 como almacenamiento principal o almacenamiento adicional. Para más información sobre Data Lake Storage Gen1, consulte Azure Data Lake Storage Gen1. Para más información sobre Data Lake Storage Gen2, consulte Azure Data Lake Storage Gen2.
Integración con servicios de Azure Un clúster de Spark en HDInsight incluye un conector a Azure Event Hubs. Las aplicaciones de streaming se pueden compilar mediante Event Hubs, lo que incluye Apache Kafka, que ya está disponible como parte de Spark.
Integración con IDE de terceros HDInsight ofrece varios complementos de IDE que son útiles para crear y enviar aplicaciones a un clúster de Spark en HDInsight. Para más información, consulte Uso de Azure Toolkit for IntelliJ IDEA, Uso de las herramientas de Spark y Hive para VSCode y Uso de Azure Toolkit for Eclipse.
Consultas simultáneas Los clústeres de Spark en HDInsight admiten consultas simultáneas. Esta funcionalidad permite que varias consultas de un usuario o varias consultas de diversos usuarios y aplicaciones compartan los mismos recursos de clúster.
Almacenamiento en caché en SSD Puede almacenar datos en caché, ya sea en memoria o en SSD conectadas a los nodos del clúster. El almacenamiento en memoria caché ofrece el mejor rendimiento de las consultas, pero también podría ser costoso. El almacenamiento en memoria caché en SSD ofrece una opción excelente para mejorar el rendimiento de las consultas sin necesidad de crear un clúster de un tamaño que admita todo el conjunto de datos en memoria. Consulte Mejora del rendimiento de las cargas de trabajo de Apache Spark con la memoria caché de E/S de Azure HDInsight.
Integración con herramientas de BI Los clústeres de Spark en HDInsight ofrecen conectores para herramientas de BI, como Power BI, para el análisis de datos.
Bibliotecas de Anaconda precargadas Los clústeres de Spark en HDInsight incluyen bibliotecas de Anaconda preinstaladas. Anaconda ofrece casi 200 bibliotecas para el aprendizaje automático, el análisis de datos, la visualización, etc.
Adaptabilidad HDInsight permite cambiar el número de nodos de clúster de forma dinámica con la característica Escalabilidad automática. Consulte Escalado automático de clústeres de Azure HDInsight. Además, los clústeres de Spark se pueden quitar sin que se pierdan datos, ya que todos los datos se almacenan en Azure Blob Storage, Azure Data Lake Storage Gen1 o Azure Data Lake Storage Gen2.
Contrato de nivel de servicio Los clústeres de Spark en HDInsight incluyen soporte técnico ininterrumpido y un SLA del 99,9 % de tiempo de actividad.

Los clústeres de Apache Spark en HDInsight incluyen los siguientes componentes que están disponibles en los clústeres de manera predeterminada.

HDInsight Spark agrupa en clústeres un controlador ODBC para obtener conectividad de herramientas de BI como Microsoft Power BI.

Arquitectura de clúster de Spark

The architecture of HDInsight Spark.

Los componentes de Spark son fáciles de entender si se conoce la manera en que Spark se ejecuta en clústeres de HDInsight.

Las aplicaciones de Spark se ejecutan como conjuntos de procesos independientes en un clúster. Coordinado por el objeto SparkContext en el programa principal (denominado programa de controladores).

SparkContext puede conectarse a varios tipos de administradores de clúster, lo que da recursos entre las aplicaciones. Estos administradores de clúster incluyen Apache Mesos, Apache Hadoop YARN o el administrador de clústeres de Spark. En HDInsight, Spark se ejecuta mediante el Administrador de clústeres YARN. Una vez conectado, Spark adquiere los ejecutores en nodos de trabajo en el clúster, que son procesos que ejecutan cálculos y almacenan los datos de la aplicación. A continuación, envía el código de la aplicación (definido por archivos JAR o Python que se pasan a SparkContext) a los ejecutores. Por último, SparkContext envía las tareas a los ejecutores para la ejecución.

SparkContext ejecuta la función principal del usuario y las distintas operaciones paralelas en los nodos de trabajo. A continuación, SparkContext recopila los resultados de las operaciones. Los nodos de trabajo leen y escriben datos del sistema de archivos distribuido de Hadoop y también en él. Además, los nodos de trabajo almacenan en caché datos transformados en memoria como conjuntos de datos distribuidos resistentes (RDD).

SparkContext se conecta al maestro de Spark y es responsable de convertir una aplicación en un grafo acíclico dirigido (DAG) de tareas individuales. Tareas que se ejecutan en un proceso ejecutor en los nodos de trabajo. Cada aplicación obtiene sus propios procesos de ejecutor. Los que permanecen durante toda la aplicación y ejecutan tareas en varios subprocesos.

Casos de uso de Spark en HDInsight

Los clústeres de Spark en HDInsight hacen posibles los siguientes escenarios clave:

Análisis interactivo de datos y BI

Apache Spark en HDInsight almacena los datos en Azure Blob Storage, Azure Data Lake Gen1 o Azure Data Lake Storage Gen2. Los expertos empresariales y responsables de la toma de decisiones clave pueden analizar y crear informes en base a esos datos. Y utilizan Microsoft Power BI para crear informes interactivos a partir de los datos analizados. Los analistas pueden comenzar a partir de datos no estructurados y semiestructurados presentes en el almacenamiento de clúster, definir un esquema de los datos mediante notebooks y luego generar modelos de datos mediante Microsoft Power BI. Los clústeres de Spark en HDInsight también admiten varias herramientas de BI de terceros. Una de ellas es Tableau, que facilita a los analistas de datos, expertos empresariales y responsables de la toma de decisiones clave.

Machine Learning con Spark

Apache Spark incluye MLlib. MLlib es una biblioteca de aprendizaje automático basada en Spark que puede usar desde un clúster de Spark en HDInsight. El clúster de Spark en HDInsight también incluye Anaconda, una distribución de Python con diversos tipos de paquetes para el aprendizaje automático. Y con la compatibilidad integrada con cuadernos de Jupyter Notebook y Zeppelin, dispone de un entorno para la creación de aplicaciones de aprendizaje automático.

Streaming y análisis de datos en tiempo real con Spark

Los clústeres de Spark en HDInsight ofrecen amplia compatibilidad para crear soluciones de análisis en tiempo real. Spark ya tiene conectores para ingerir datos de muchos orígenes, como Kafka, Flume, Twitter, ZeroMQ o sockets TCP. Spark en HDInsight agrega compatibilidad de primera clase para la ingesta de datos de Azure Event Hubs. Event Hubs son el servicio de cola más usado de Azure. La disponibilidad de compatibilidad completa con Event Hubs convierte a los clústeres de Spark en HDInsight en una plataforma ideal para crear una canalización de análisis en tiempo real.

Pasos siguientes

En esta introducción, se le ha proporcionado un conocimiento básico de Apache Spark en Azure HDInsight. Puede usar los siguientes artículos para más información sobre Apache Spark en HDInsight y puede crear un clúster de HDInsight Spark y ejecutar algunas consultas de Spark de ejemplo: