Qué es Apache Spark en Azure HDInsightWhat is Apache Spark in Azure HDInsight

Apache Spark es una plataforma de procesamiento paralelo que admite el procesamiento en memoria para mejorar el rendimiento de las aplicaciones de análisis de macrodatos.Apache Spark parallel processing framework that supports in-memory processing to boost the performance of big-data analytic applications. Apache Spark en Azure HDInsight es la implementación que hace Microsoft de Apache Spark en la nube.Apache Spark in Azure HDInsight is the Microsoft implementation of Apache Spark in the cloud. HDInsight facilita la creación y la configuración de un clúster de Spark en Azure.HDInsight makes it easier to create and configure a Spark cluster in Azure. Los clústeres de Spark en HDInsight son compatibles con Azure Storage y Azure Data Lake Store.Spark clusters in HDInsight are compatible with Azure Storage and Azure Data Lake Store. Por lo que puede usar clústeres de HDInsight Spark para procesar los datos almacenados en Azure.So you can use HDInsight Spark clusters to process your data stored in Azure. Para conocer los componentes y la información de versiones, consulte los componentes y versiones de Hadoop disponibles con Azure HDInsight.For the components and the versioning information, see Hadoop components and versions in Azure HDInsight.

Spark: un marco unificado

¿Qué es Spark?What is Spark?

Spark proporciona primitivas de computación de clúster en memoria.Spark provides primitives for in-memory cluster computing. Un trabajo de Spark puede cargar y almacenar en la memoria caché datos, y repetir consultas sobre ellos.A Spark job can load and cache data into memory and query it repeatedly. La informática en la memoria es mucho más rápida que las aplicaciones basadas en disco, como Hadoop, que comparte datos a través de HDFS.In-memory computing is much faster than disk-based applications, such as Hadoop, which shares data through HDFS. Spark también se integra en el lenguaje de programación de Scala para que pueda manipular conjuntos de datos distribuidos, como las colecciones locales.Spark also integrates into the Scala programming language to let you manipulate distributed data sets like local collections. No se necesita estructurar todo como operaciones de asignación y reducción.There's no need to structure everything as map and reduce operations.

Comparación del tradicional MapReduce y Spark

Los clústeres de Spark en HDInsight ofrecen un servicio de Spark completamente administrado.Spark clusters in HDInsight offer a fully managed Spark service. Aquí se enumeran las ventajas de crear un clúster de Spark en HDInsight.Benefits of creating a Spark cluster in HDInsight are listed here.

CaracterísticaFeature DESCRIPCIÓNDescription
Creación sencillaEase creation 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.You can create a new Spark cluster in HDInsight in minutes using the Azure portal, Azure PowerShell, or the HDInsight .NET SDK. Consulte Introducción al clúster de Spark en HDInsightSee Get started with Spark cluster in HDInsight
Facilidad de usoEase of use El clúster de Spark en HDInsight incluye notebooks de Jupyter y Zeppelin.Spark cluster in HDInsight include Jupyter and Zeppelin notebooks. Puede usar estos notebooks para el procesamiento y la visualización de datos interactivos.You can use these notebooks for interactive data processing and visualization.
API de RESTREST APIs Los clústeres de Spark en HDInsight incluyen Livy, un servidor de trabajos de Spark basado en una API de REST para enviar y supervisar trabajos de forma remota.Spark clusters in HDInsight include Livy, a REST API-based Spark job server to remotely submit and monitor jobs.
Compatibilidad con Almacén de Azure Data LakeSupport for Azure Data Lake Store Los clústeres de Spark en HDInsight pueden usar Azure Data Lake Store como almacenamiento principal o almacenamiento adicional.Spark clusters in HDInsight can use Azure Data Lake Store as both the primary storage or additional storage. Para más información acerca del Almacén de Data Lake, consulte la página con información general del Almacén de Azure Data Lake.For more information on Data Lake Store, see Overview of Azure Data Lake Store.
Integración con servicios de AzureIntegration with Azure services Un clúster de Spark en HDInsight incluye un conector a Azure Event Hubs.Spark cluster in HDInsight comes with a connector to Azure Event Hubs. Puede compilar aplicaciones de streaming con Event Hubs, además de con Kafka, que ya está disponible como parte de Spark.You can build streaming applications using the Event Hubs, in addition to Kafka, which is already available as part of Spark.
Compatibilidad con ML ServerSupport for ML Server Se proporciona compatibilidad con ML Server en HDInsight como el tipo de clúster ML Services.Support for ML Server in HDInsight is provided as the ML Services cluster type. Puede configurar un clúster de ML Services para ejecutar cálculos R distribuidos con las velocidades prometidas mediante un clúster de Spark.You can set up an ML Services cluster to run distributed R computations with the speeds promised with a Spark cluster. Para más información, consulte Introducción al uso de ML Server en HDInsight.For more information, see Get started using ML Server in HDInsight.
Integración con IDE de tercerosIntegration with third-party IDEs HDInsight ofrece varios complementos de IDE que son útiles para crear y enviar aplicaciones a un clúster de Spark en HDInsight.HDInsight provides several IDE plugins that are useful to create and submit applications to an HDInsight Spark cluster. Para más información, consulte Uso de Azure Toolkit for IntelliJ IDEA, Uso de HDInsight for VSCode y Uso de Azure Toolkit for Eclipse.For more information, see Use Azure Toolkit for IntelliJ IDEA, Use HDInsight for VSCode and Use Azure Toolkit for Eclipse.
Consultas simultáneasConcurrent Queries Los clústeres de Spark en HDInsight admiten consultas simultáneas.Spark clusters in HDInsight support concurrent queries. Esta funcionalidad permite que varias consultas de un usuario o varias consultas de diversos usuarios y aplicaciones compartan los mismos recursos de clúster.This capability enables multiple queries from one user or multiple queries from various users and applications to share the same cluster resources.
Almacenamiento en caché en SSDCaching on SSDs Puede almacenar datos en caché, ya sea en memoria o en SSD conectadas a los nodos del clúster.You can choose to cache data either in memory or in SSDs attached to the cluster nodes. El almacenamiento en memoria caché ofrece el mejor rendimiento de las consultas, pero también podría ser costoso.Caching in memory provides the best query performance but could be expensive. 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.Caching in SSDs provides a great option for improving query performance without the need to create a cluster of a size that is required to fit the entire dataset in memory.
Integración con herramientas de BIIntegration with BI Tools Los clústeres de Spark en HDInsight ofrecen conectores para herramientas de BI como Power BI para el análisis de datos.Spark clusters in HDInsight provide connectors for BI tools such as Power BI for data analytics.
Bibliotecas de Anaconda precargadasPre-loaded Anaconda libraries Los clústeres de Spark en HDInsight incluyen bibliotecas de Anaconda preinstaladas.Spark clusters in HDInsight come with Anaconda libraries pre-installed. Anaconda ofrece prácticamente 200 bibliotecas para el aprendizaje automático, el análisis de datos, la visualización, etc.Anaconda provides close to 200 libraries for machine learning, data analysis, visualization, etc.
EscalabilidadScalability HDInsight le permite cambiar el número de nodos de clúster.HDInsight allow you to change the number of cluster nodes. Además, se pueden quitar clústeres de Spark sin que se pierdan datos, ya que todos están almacenados en Azure Storage o Data Lake Store.Also, Spark clusters can be dropped with no loss of data since all the data is stored in Azure Storage or Data Lake Store.
Contrato de nivel de servicioSLA Los clústeres de Spark en HDInsight incluyen soporte técnico ininterrumpido y un SLA del 99,9 % de tiempo de actividad.Spark clusters in HDInsight come with 24/7 support and an SLA of 99.9% up-time.

Los clústeres de Spark en HDInsight incluyen los siguientes componentes que están disponibles en los clústeres de manera predeterminada.Spark clusters in HDInsight include the following components that are available on the clusters by default.

Los clústeres de Spark en HDInsight también ofrecen un controlador ODBC para la conectividad con clústeres de Spark en HDInsight desde herramientas de inteligencia empresarial, como Microsoft Power BI.Spark clusters in HDInsight also provide an ODBC driver for connectivity to Spark clusters in HDInsight from BI tools such as Microsoft Power BI.

Arquitectura de clúster de SparkSpark cluster architecture

La arquitectura de HDInsight Spark

Los componentes de Spark son fáciles de entender si se entiende la manera en que Spark se ejecuta en clústeres de HDInsight.It is easy to understand the components of Spark by understanding how Spark runs on HDInsight clusters.

Las aplicaciones de Spark se ejecutan como conjuntos de procesos independientes en un clúster, coordinados por el objeto SparkContext en el programa principal (denominado el programa del controlador).Spark applications run as independent sets of processes on a cluster, coordinated by the SparkContext object in your main program (called the driver program).

SparkContext puede conectarse a varios tipos de administradores de clúster que asignan los recursos entre las aplicaciones.The SparkContext can connect to several types of cluster managers, which allocate resources across applications. Estos administradores de clúster incluyen Apache Mesos, Apache YARN y el administrador de clústeres de Spark.These cluster managers include Apache Mesos, Apache YARN, or the Spark cluster manager. En HDInsight, Spark se ejecuta mediante el Administrador de clústeres YARN.In HDInsight, Spark runs using the YARN cluster manager. 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.Once connected, Spark acquires executors on workers nodes in the cluster, which are processes that run computations and store data for your application. 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.Next, it sends your application code (defined by JAR or Python files passed to SparkContext) to the executors. Por último, SparkContext envía las tareas a los ejecutores para la ejecución.Finally, SparkContext sends tasks to the executors to run.

SparkContext ejecuta la función principal del usuario y las distintas operaciones paralelas en los nodos de trabajo.The SparkContext runs the user's main function and executes the various parallel operations on the worker nodes. A continuación, SparkContext recopila los resultados de las operaciones.Then, the SparkContext collects the results of the operations. Los nodos de trabajo leen y escriben datos del sistema de archivos distribuido de Hadoop (HDFS) y también en él.The worker nodes read and write data from and to the Hadoop distributed file system (HDFS). Además, los nodos de trabajo almacenan en caché datos transformados en memoria como conjuntos de datos distribuidos resistentes (RDD).The worker nodes also cache transformed data in-memory as Resilient Distributed Datasets (RDDs).

SparkContext se conecta al nodo principal de Spark y es responsable de convertir una aplicación en un grafo dirigido (DAG) de las tareas individuales que se ejecutan dentro de un proceso ejecutor en los nodos de trabajo.The SparkContext connects to the Spark master and is responsible for converting an application to a directed graph (DAG) of individual tasks that get executed within an executor process on the worker nodes. Cada aplicación obtiene sus propios procesos ejecutores, que permanecen mientras dure la aplicación y ejecutan tareas en varios subprocesos.Each application gets its own executor processes, which stay up for the duration of the whole application and run tasks in multiple threads.

Casos de uso de Spark en HDInsightSpark in HDInsight use cases

Los clústeres de Spark en HDInsight hacen posibles los siguientes escenarios clave:Spark clusters in HDInsight enable the following key scenarios:

  • Análisis interactivo de datos y BIInteractive data analysis and BI

    Apache Spark en HDInsight almacena datos en Azure Storage o Azure Data Lake Store.Apache Spark in HDInsight stores data in Azure Storage or Azure Data Lake Store. Los expertos de la empresa y los responsables de la toma de decisiones clave pueden analizar esos datos y generar informes con ellos, así como usar Microsoft Power BI para crear informes interactivos a partir de los datos analizados.Business experts and key decision makers can analyze and build reports over that data and use Microsoft Power BI to build interactive reports from the analyzed data. 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.Analysts can start from unstructured/semi structured data in cluster storage, define a schema for the data using notebooks, and then build data models using Microsoft Power BI. Los clústeres de Spark en HDInsight también admiten varias herramientas de BI de terceros, como Tableau, lo que resulta más sencillo para analistas de datos, expertos de empresa y responsables de la toma de decisiones clave.Spark clusters in HDInsight also support a number of third-party BI tools such as Tableau making it easier for data analysts, business experts, and key decision makers.

    Tutorial: Visualizar datos de Spark mediante Power BITutorial: Visualize Spark data using Power BI

  • Machine Learning con SparkSpark Machine Learning

    Apache Spark incluye MLlib, una biblioteca de aprendizaje automático basada en Spark que puede usar desde un clúster de Spark en HDInsight.Apache Spark comes with MLlib, a machine learning library built on top of Spark that you can use from a Spark cluster in HDInsight. El clúster de Spark en HDInsight también incluye Anaconda, una distribución de Python con diversos paquetes para aprendizaje automático.Spark cluster in HDInsight also includes Anaconda, a Python distribution with a variety of packages for machine learning. Si agregamos a esto la compatibilidad integrada con notebooks de Jupyter y Zeppelin, dispone de un entorno para la creación de aplicaciones de aprendizaje automático.Couple this with a built-in support for Jupyter and Zeppelin notebooks, and you have an environment for creating machine learning applications.

    Tutorial: predecir las temperaturas de edificios con datos HVAC Tutorial: predecir los resultados de la inspección de alimentosTutorial: Predict building temperatures using HVAC data Tutorial: Predict food inspection results

  • Streaming y análisis de datos en tiempo real con SparkSpark streaming and real-time data analysis

    Los clústeres de Spark en HDInsight ofrecen amplia compatibilidad para crear soluciones de análisis en tiempo real.Spark clusters in HDInsight offer a rich support for building real-time analytics solutions. Mientras que Spark ya posee conectores para insertar datos de varios orígenes como los sockets TCP, Flume, Twitter, ZeroMQ o Kafka, Spark en HDInsight agrega compatibilidad de primera clase para insertar datos desde Azure Event Hubs.While Spark already has connectors to ingest data from many sources like Kafka, Flume, Twitter, ZeroMQ, or TCP sockets, Spark in HDInsight adds first-class support for ingesting data from Azure Event Hubs. Event Hubs son el servicio de cola más usado de Azure.Event Hubs is the most widely used queuing service on Azure. La disponibilidad inmediata de la compatibilidad con Event Hubs convierte a los clústeres de Spark en HDInsight en una plataforma ideal para crear la canalización de análisis en tiempo real.Having an out-of-the-box support for Event Hubs makes Spark clusters in HDInsight an ideal platform for building real-time analytics pipeline.

¿Por dónde empiezo?Where do I start?

Puede usar los siguientes artículos para obtener más información sobre Spark en HDInsight:You can use the following articles to learn more about Spark in HDInsight:

Pasos siguientesNext Steps

En esta introducción, obtendrá cierto conocimiento básico de Apache Spark en Azure HDInsight.In this overview, you get some basic understanding of Apache Spark in Azure HDInsight. Vaya al siguiente artículo para aprender a crear un clúster de HDInsight Spark y ejecutar algunas consultas SQL de Spark:Advance to the next article to learn how to create an HDInsight Spark cluster and run some Spark SQL queries: