Introducción a Spark en HDInsightIntroduction to Spark on HDInsight

En este artículo se proporciona una introducción a Spark en HDInsight.This article provides you with an introduction to Spark on HDInsight. Apache Spark es un marco de procesamiento paralelo de código abierto que admite el procesamiento en memoria para mejorar el rendimiento de las aplicaciones analíticas de Big Data.Apache Spark is an open-source parallel processing framework that supports in-memory processing to boost the performance of big-data analytic applications. El clúster de Spark en HDInsight es compatible con Azure Storage (WASB), así como con Azure Data Lake Store.Spark cluster on HDInsight is compatible with Azure Storage (WASB) as well as Azure Data Lake Store. Por lo tanto, los datos existentes almacenados en Azure se pueden procesar fácilmente a través de un clúster de Spark.Hence, your existing data stored in Azure can easily be processed via a Spark cluster.

Cuando crea un clúster de Spark en HDInsight, aprovisiona recursos de proceso de Azure con Spark instalado y configurado.When you create a Spark cluster on HDInsight, you create Azure compute resources with Spark installed and configured. Apenas se tardan unos diez minutos en crear un clúster Spark en HDInsight.It only takes about 10 minutes to create a Spark cluster in HDInsight. Los datos que se van a procesar se almacenan en Azure Storage o Azure Data Lake Store.The data to be processed is stored in Azure Storage or Azure Data Lake Store. Consulte Uso de Azure Storage con HDInsight.See Use Azure Storage with HDInsight.

Spark: un marco unificado

Comparación de Spark y el tradicional MapReduceSpark vs. traditional MapReduce

¿Por qué Spark es tan rápido?What makes Spark fast? ¿En qué se diferencia la arquitectura de Apache Spark del tradicional MapReduce, que permite ofrecer un mejor rendimiento de uso compartido de datos?How is the architecture of Apache Spark different than traditional MapReduce, allowing it to offer better performance for data sharing?

Comparación del tradicional MapReduce y 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, mucho más rápidamente que los sistemas basados en disco.A Spark job can load and cache data into memory and query it repeatedly, much more quickly than disk-based systems. Spark también se integra en el lenguaje de programación de Scala para que pueda manipular conjuntos de datos distribuidos como 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.

En Spark, el uso compartido de datos entre las operaciones es más rápido, ya que los datos están en memoria.In Spark, data sharing between operations is faster since data is in-memory. En cambio, Hadoop comparte datos a través de HDFS, cuyo procesamiento tarda más.In contrast, Hadoop shares data through HDFS, which takes longer to process.

¿Qué es Apache Spark en Azure HDInsight?What is Apache Spark on Azure HDInsight?

Los clústeres de Spark en HDInsight ofrecen un servicio de Spark completamente administrado.Spark clusters on 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 on HDInsight are listed here.

CaracterísticaFeature DESCRIPCIÓNDescription
Facilidad de creación de clústeres de SparkEase of creating Spark clusters 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 on 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 Se puede configurar un clúster de Spark en HDInsight para que utilice Azure Data Lake Store como almacenamiento adicional, además de como almacenamiento principal (solo con clústeres de HDInsight 3.5).Spark cluster on HDInsight can be configured to use Azure Data Lake Store as an additional storage, as well as primary storage (only with HDInsight 3.5 clusters). 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 on HDInsight comes with a connector to Azure Event Hubs. Los clientes pueden compilar aplicaciones de streaming con Event Hubs, además de con Kafka, que ya está disponible como parte de Spark.Customers can build streaming applications using the Event Hubs, in addition to Kafka, which is already available as part of Spark.
Compatibilidad con R ServerSupport for R Server Puede configurar R Server en el clúster Spark de HDInsight para ejecutar cálculos R distribuidos con las velocidades prometidas mediante un clúster Spark.You can set up a R Server on HDInsight Spark cluster to run distributed R computations with the speeds promised with a Spark cluster. Para obtener más información, consulte Get started using R Server on HDInsight(Introducción a R Server en HDInsight).For more information, see Get started using R Server on HDInsight.
Integración con IDE de tercerosIntegration with third-party IDEs HDInsight proporciona complementos para IDE tales como IntelliJ IDEA y Eclipse que puede usar para crear y enviar solicitudes a un clúster de Spark en HDInsight.HDInsight provides plugins for IDEs like IntelliJ IDEA and Eclipse that you can use to create and submit applications to an HDInsight Spark cluster. Para más información, consulte artículo sobre el uso del kit de herramientas de Azure para IntelliJ IDEA y el uso del kit de herramientas de Azure para Eclipse.For more information, see Use Azure Toolkit for IntelliJ IDEA 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. Esto permite que varias consultas de un usuario o varias consultas de diversos usuarios y aplicaciones compartan los mismos recursos de clúster.This 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 proporciona el mejor rendimiento para las consultas pero podría ser costoso; el almacenamiento 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 memory provides the best query performance but could be expensive; 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 y Tableau para el análisis de datos.Spark clusters on HDInsight provide connectors for BI tools such as Power BI and Tableau for data analytics.
Bibliotecas de Anaconda precargadasPre-loaded Anaconda libraries Los clústeres Spark en HDInsight incluyen bibliotecas de Anaconda preinstaladas.Spark clusters on 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 Aunque puede especificar el número de nodos del clúster durante la creación, puede que desee aumentar o reducir el clúster para que coincida con la carga de trabajo.Although you can specify the number of nodes in your cluster during creation, you may want to grow or shrink the cluster to match workload. Todos los clústeres de HDInsight le permiten cambiar el número de nodos del clúster.All HDInsight clusters allow you to change the number of nodes in the cluster. 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.
Soporte técnico ininterrumpido24/7 Support Los clústeres de Spark en HDInsight incluyen soporte técnico ininterrumpido de nivel empresarial y un Acuerdo de Nivel de Servicio del 99,9 % de tiempo de actividad.Spark clusters on HDInsight come with enterprise-level 24/7 support and an SLA of 99.9% up-time.

Arquitectura de clúster de SparkSpark cluster architecture

Aquí se explica la arquitectura de clúster de Spark y cómo funciona:Here is the Spark cluster architecture and how it works:

Arquitectura de clúster de Spark

El nodo principal tiene el principal de Spark que administra el número de aplicaciones, las aplicaciones se asignan a los controladores de Spark.The head node has the Spark master that manages the number of applications, the apps are mapped to the Spark driver. Todas las aplicaciones se administran mediante el principal de Spark de varias maneras.Every app is managed by Spark master in various ways. Spark puede implementarse sobre Mesos, YARN o el Administrador de clústeres de Spark, que asigna recursos de nodo de trabajo a una aplicación.Spark can be deployed on top of Mesos, YARN, or the Spark cluster manager, which allocates worker node resources to an application. En HDInsight, Spark se ejecuta mediante el Administrador de clústeres YARN.In HDInsight, Spark runs using the YARN cluster manager. Los recursos del clúster se administran mediante el principal de Spark en HDInsight.The resources in the cluster are managed by Spark master in HDInsight. Esto significa que el principal de Spark conoce qué recursos, como la memoria, están ocupados o disponibles en el nodo de trabajo.That means the Spark master has knowledge of which resources, like memory, are occupied or available on the worker node.

El controlador ejecuta la función principal del usuario y las distintas operaciones paralelas en los nodos de trabajo.The driver runs the user's main function and executes the various parallel operations on the worker nodes. A continuación, recopila los resultados de las operaciones.Then, the driver 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).

Una vez creada la aplicación en el nodo principal de Spark, este asigna los recursos a las aplicaciones al crear una ejecución denominada controlador de Spark.Once the app is created in the Spark master, the resources are allocated to the apps by Spark master, creating an execution called the Spark driver. El controlador de Spark también crea SparkContext y comienza a crear los RDD.The Spark driver also creates the SparkContext and also starts creating the RDDs. Los metadatos de los RDD se almacenan en el controlador de Spark.The metadata of the RDDs are stored on the Spark driver.

El controlador de Spark 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 Spark driver 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.

¿Cuáles son los casos de uso para Spark en HDInsight?What are the use cases for Spark on HDInsight?

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

Vea un tutorialLook at a tutorial

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, por lo que es una plataforma ideal 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 an ideal platform for data analysts, business experts, and key decision makers.

Machine Learning con SparkSpark Machine Learning

Mire un tutorial: predecir las temperaturas de edificios con datos HVACLook at a tutorial: Predict building temperatures using HVAC data

Mire un tutorial: predecir los resultados de la inspección de alimentosLook at a tutorial: Predict food inspection results

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 on 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 de primera línea 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 a top-of-the-line environment for creating machine learning applications.

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.

¿Qué componentes se incluyen como parte de un clúster Spark?What components are included as part of a Spark cluster?

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 y Tableau.Spark clusters on HDInsight also provide an ODBC driver for connectivity to Spark clusters in HDInsight from BI tools such as Microsoft Power BI and Tableau.

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

Empiece por crear un clúster de Spark en HDInsight.Start with creating a Spark cluster on HDInsight. Consulte el inicio rápido sobre cómo crear un clúster de Spark en HDInsight Linux y ejecutar consultas interactivas mediante Jupyter.See QuickStart: create a Spark cluster on HDInsight Linux and run interactive query using Jupyter.

Pasos siguientesNext Steps

EscenariosScenarios

Creación y ejecución de aplicacionesCreate and run applications

Herramientas y extensionesTools and extensions

Administración de recursosManage resources