Apache Spark в Azure HDInsightWhat is Apache Spark in Azure HDInsight

Apache Spark — это платформа параллельной обработки, которая поддерживает обработку в памяти, чтобы повысить производительность приложений для анализа больших данных.Apache Spark is a parallel processing framework that supports in-memory processing to boost the performance of big-data analytic applications. Apache Spark в Azure HDInsight — это реализация Apache Spark в облаке, предоставляемая корпорацией Майкрософт.Apache Spark in Azure HDInsight is the Microsoft implementation of Apache Spark in the cloud. HDInsight упрощает создание и настройку кластера Spark в Azure.HDInsight makes it easier to create and configure a Spark cluster in Azure. Кластеры Spark в HDInsight совместимы со службой хранилища Azure и Azure Data Lake Storage.Spark clusters in HDInsight are compatible with Azure Storage and Azure Data Lake Storage. Поэтому эти кластеры можно использовать для обработки данных, хранящихся в Azure.So you can use HDInsight Spark clusters to process your data stored in Azure. Дополнительные сведения о компонентах и версиях см. в статье Что представляют собой компоненты и версии Apache Hadoop, доступные в HDInsight.For the components and the versioning information, see Apache Hadoop components and versions in Azure HDInsight.

Spark: единая платформа

Что такое Apache Spark?What is Apache Spark?

Spark предоставляет примитивы для кластерных вычислений в памяти.Spark provides primitives for in-memory cluster computing. Задание Spark может загрузить данные, поместить их в кэш в памяти и запрашивать их неоднократно.A Spark job can load and cache data into memory and query it repeatedly. Вычисления в памяти выполняются намного быстрее, чем в приложениях, использующих диски, таких как приложение Hadoop, которое предоставляет доступ к данным через распределенную файловую систему Hadoop (HDFS).In-memory computing is much faster than disk-based applications, such as Hadoop, which shares data through Hadoop distributed file system (HDFS). Spark также интегрируется в язык программирования Scala, что дает возможность управлять распределенными наборами данных, такими как локальные коллекции.Spark also integrates into the Scala programming language to let you manipulate distributed data sets like local collections. Нет необходимости структурировать обмен данными как операции сопоставления и редукции.There's no need to structure everything as map and reduce operations.

Сравнительная характеристика традиционной модели MapReduce и Spark

Кластеры Spark в HDInsight предлагают полностью управляемую службу Spark.Spark clusters in HDInsight offer a fully managed Spark service. Ниже приведены преимущества создания кластера Spark в HDInsight.Benefits of creating a Spark cluster in HDInsight are listed here.

ФункцияFeature ОПИСАНИЕDescription
Простота созданияEase creation Создание кластера Spark в HDInsight с помощью портала Azure, Azure PowerShell или пакета SDK для HDInsight .NET занимает всего несколько минут.You can create a new Spark cluster in HDInsight in minutes using the Azure portal, Azure PowerShell, or the HDInsight .NET SDK. См. инструкции по началу работы с кластером Apache Spark в HDInsight.See Get started with Apache Spark cluster in HDInsight.
Простота использованияEase of use Кластер Spark в HDInsight включает записные книжки Jupyter и Apache Zeppelin.Spark cluster in HDInsight include Jupyter and Apache Zeppelin notebooks. Их можно использовать для интерактивной обработки и визуализации данных.You can use these notebooks for interactive data processing and visualization.
Интерфейсы REST APIREST APIs Кластеры Spark в HDInsight включают Apache Livy, сервер заданий Spark на основе REST API, который позволяет удаленно отправлять и отслеживать задания.Spark clusters in HDInsight include Apache Livy, a REST API-based Spark job server to remotely submit and monitor jobs. См. руководство по удаленной отправке заданий Spark в кластер Azure HDInsight с помощью Apache Spark REST API.See Use Apache Spark REST API to submit remote jobs to an HDInsight Spark cluster.
Поддержка Azure Data Lake StorageSupport for Azure Data Lake Storage Кластеры Spark в HDInsight могут использовать Azure Data Lake Storage как основное или дополнительное хранилище.Spark clusters in HDInsight can use Azure Data Lake Storage as both the primary storage or additional storage. Дополнительные сведения о Data Lake Storage см. в обзоре Azure Data Lake Storage.For more information on Data Lake Storage, see Overview of Azure Data Lake Storage.
Интеграция со службами AzureIntegration with Azure services Кластер Spark в HDInsight поставляется с соединителем для Центров событий Azure.Spark cluster in HDInsight comes with a connector to Azure Event Hubs. Вы можете создавать приложения потоковой передачи с помощью Центров событий (в дополнение к системе Apache Kafka, которая уже входит в состав Spark).You can build streaming applications using the Event Hubs, in addition to Apache Kafka, which is already available as part of Spark.
Поддержка ML ServerSupport for ML Server Поддержка ML Server в HDInsight предоставляется в рамках типа кластера Служб машинного обучения.Support for ML Server in HDInsight is provided as the ML Services cluster type. В кластере Служб машинного обучения можно настроить выполнение распределенных вычислений в среде R со скоростью, заявленной для кластера Spark.You can set up an ML Services cluster to run distributed R computations with the speeds promised with a Spark cluster. Дополнительные сведения см. в статье Общие сведения о службах машинного обучения в HDInsight.For more information, see What is ML Services in Azure HDInsight.
Интеграция со сторонними IDEIntegration with third-party IDEs HDInsight предоставляет несколько подключаемых модулей IDE, которые можно использовать для создания приложений и их отправки в кластер HDInsight Spark.HDInsight provides several IDE plugins that are useful to create and submit applications to an HDInsight Spark cluster. См. дополнительные сведения об использовании Azure Toolkit for IntelliJ (IDEA), использовании средств Spark и Hive для VSCode и использовании Azure Toolkit for Eclipse.For more information, see Use Azure Toolkit for IntelliJ IDEA, Use Spark & Hive Tools for VSCode, and Use Azure Toolkit for Eclipse.
Параллельные запросыConcurrent Queries Кластеры Spark в HDInsight поддерживают параллельные запросы.Spark clusters in HDInsight support concurrent queries. Благодаря этому несколько запросов от одного пользователя или несколько запросов от разных пользователей и из различных приложений могут использовать одни и те же ресурсы кластера.This capability enables multiple queries from one user or multiple queries from various users and applications to share the same cluster resources.
Кэширование на накопители SSDCaching on SSDs Можно выбрать кэширование данных в памяти или на накопители SSD, подключенные к узлам кластера.You can choose to cache data either in memory or in SSDs attached to the cluster nodes. Кэширование в память обеспечивает наилучшую производительность запросов, однако может оказаться ресурсоемким.Caching in memory provides the best query performance but could be expensive. Кэширование на накопители SSD предоставляет возможность повысить производительность запросов без необходимости создания кластера такого размера, который необходим для размещения всего набора данных в памяти.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.
Интеграция со средствами бизнес-аналитикиIntegration with BI Tools В состав кластеров Spark для HDInsight входят соединители для инструментов бизнес-аналитики, таких как Power BI для анализа данных.Spark clusters in HDInsight provide connectors for BI tools such as Power BI for data analytics.
Предварительно загруженные библиотеки AnacondaPre-loaded Anaconda libraries Кластеры Spark в HDInsight поставляются с предустановленными библиотеками Anaconda.Spark clusters in HDInsight come with Anaconda libraries pre-installed. Anaconda содержит порядка 200 библиотек для машинного обучения, анализа данных, визуализации и т. д.Anaconda provides close to 200 libraries for machine learning, data analysis, visualization, and so on.
МасштабируемостьScalability В HDInsight можно изменить количество узлов кластера.HDInsight allows you to change the number of cluster nodes. Кроме того, кластеры Spark можно удалить без потери данных, так как все данные хранятся в службе хранилища Azure или Data Lake Storage.Also, Spark clusters can be dropped with no loss of data since all the data is stored in Azure Storage or Data Lake Storage.
Соглашение об уровне обслуживанияSLA Для кластеров Spark в HDInsight предоставляется круглосуточная и ежедневная поддержка и соглашения об уровне обслуживания, гарантирующие время бесперебойной работы на уровне 99,9 %.Spark clusters in HDInsight come with 24/7 support and an SLA of 99.9% up-time.

Кластеры Apache Spark в HDInsight включают следующие компоненты, доступные в кластерах по умолчанию.Apache Spark clusters in HDInsight include the following components that are available on the clusters by default.

Кроме того, кластеры Spark в HDInsight включают драйвер ODBC для подключения к кластерам Spark в HDInsight из таких инструментов бизнес-аналитики, как 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.

Архитектура кластера SparkSpark cluster architecture

Архитектура HDInsight Spark

Чтобы разобраться с компонентами Spark, нужно понять принцип работы Spark в кластерах HDInsight.It's easy to understand the components of Spark by understanding how Spark runs on HDInsight clusters.

Приложения Spark выполняются как независимые наборы процессов в кластере, координируемые объектом SparkContext в основной программе (называемой программой драйвера).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 может подключаться к нескольким типам диспетчеров кластеров, которые распределяют ресурсы между приложениями.The SparkContext can connect to several types of cluster managers, which allocate resources across applications. К этим диспетчерам кластеров относятся Apache Mesos, Apache Hadoop YARN и Spark.These cluster managers include Apache Mesos, Apache Hadoop YARN, or the Spark cluster manager. В HDInsight Spark выполняется с использованием диспетчера кластеров YARN.In HDInsight, Spark runs using the YARN cluster manager. После подключения Spark получает исполнителей на рабочих узлах кластера. Исполнители представляют собой процессы,которые выполняют вычисления и хранят данные для приложения.Once connected, Spark acquires executors on workers nodes in the cluster, which are processes that run computations and store data for your application. Затем Spark отправляет исполнителям код приложения (определенный в JAR- или Python-файлах, переданных в SparkContext).Next, it sends your application code (defined by JAR or Python files passed to SparkContext) to the executors. Наконец, SparkContext отправляет исполнителям задачи для выполнения.Finally, SparkContext sends tasks to the executors to run.

SparkContext выполняет основную функцию пользователя и осуществляет различные параллельные операции на рабочих узлах.The SparkContext runs the user's main function and executes the various parallel operations on the worker nodes. Затем SparkContext собирает результаты операций.Then, the SparkContext collects the results of the operations. Рабочие узлы считывают данные из распределенной файловой системы Hadoop и записывают их в нее.The worker nodes read and write data from and to the Hadoop distributed file system. Кроме того, рабочие узлы помещают преобразованные данные в кэш в памяти как устойчивые распределенные наборы данных (RDD).The worker nodes also cache transformed data in-memory as Resilient Distributed Datasets (RDDs).

SparkContext подключается к главному узлу Spark и отвечает за преобразование приложения в ориентированный граф (DAG) для отдельных задач, которые выполняются в рамках процесса исполнителя в рабочих узлах.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. Каждое приложение получает отдельные процессы исполнителя, которые остаются активными во время выполнения приложения и обрабатывают задачи в нескольких потоках.Each application gets its own executor processes, which stay up for the duration of the whole application and run tasks in multiple threads.

Варианты использования Spark в HDInsightSpark in HDInsight use cases

Ниже представлены сценарии для использования кластеров Spark в HDInsight.Spark clusters in HDInsight enable the following key scenarios:

  • Интерактивный анализ данных и бизнес-аналитикаInteractive data analysis and BI

    Apache Spark в HDInsight хранит данные в службе хранилища Azure или Azure Data Lake Storage.Apache Spark in HDInsight stores data in Azure Storage or Azure Data Lake Storage. Бизнес-эксперты и лица, ответственные за принятие решений, могут анализировать и создавать отчеты на основе этих данных, а также создавать интерактивные отчеты из проанализированных данных с помощью средств Microsoft Power BI.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. Аналитики могут использовать неструктурированные или полуструктурированные данные в хранилище кластеров, определить схему для данных с помощью записных книжек, а затем создать модели данных с помощью средств 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. Кластеры Spark в HDInsight также поддерживают ряд инструментов бизнес-аналитики сторонних разработчиков, таких как Tableau. Поэтому Spark является лучшим вариантом для аналитиков, бизнес-экспертов и лиц, ответственных за принятие решений.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.

    Руководство. Визуализация данных Spark с помощью Power BITutorial: Visualize Spark data using Power BI

  • Машинное обучение SparkSpark Machine Learning

    В состав Apache Spark входит MLlib, библиотека машинного обучения, созданная на основе Spark, которую вы можете использовать из кластера Spark в 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. Кластер Spark в HDInsight также включает Anaconda, дистрибутив Python с различными пакетами для машинного обучения.Spark cluster in HDInsight also includes Anaconda, a Python distribution with different kinds of packages for machine learning. Все это дополнено встроенной поддержкой записных книжек Jupyter и Zeppelin — в итоге вы получаете в свое распоряжение среду для создания приложений машинного обучения.Couple this with a built-in support for Jupyter and Zeppelin notebooks, and you have an environment for creating machine learning applications.

    Руководство. Прогнозирование температуры в зданиях с помощью данных системы кондиционированияTutorial: Predict building temperatures using HVAC data
    Руководство. Прогнозирование результата проверки продуктов.Tutorial: Predict food inspection results

  • Потоковая передача и анализ данных в режиме реального времени в SparkSpark streaming and real-time data analysis

    Кластеры Spark в HDInsight обладают широкой поддержкой для создания решений для аналитики в режиме реального времени.Spark clusters in HDInsight offer a rich support for building real-time analytics solutions. Поскольку в состав Spark уже входят соединители для приема данных из различных источников, таких как Flume, Kafka, Twitter, ZeroMQ или сокеты TCP, Spark в HDInsight позволяет реализовать первоклассную поддержку для приема данных из Центров событий Azure.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. Центры событий — это наиболее часто используемые службы очередей в Azure.Event Hubs is the most widely used queuing service on Azure. Встроенная поддержка Центров событий делает кластеры Spark в HDInsight идеальной платформой для создания конвейеров аналитики в режиме реального времени.Having an out-of-the-box support for Event Hubs makes Spark clusters in HDInsight an ideal platform for building real-time analytics pipeline.

С чего начать?Where do I start?

Дополнительные сведения об Apache Spark в HDInsight см. в следующих руководствах:You can use the following articles to learn more about Apache Spark in HDInsight:

Дальнейшие действияNext Steps

В этой обзорной статье вы получили некоторые основные сведения об Apache Spark в Azure HDInsight.In this overview, you get some basic understanding of Apache Spark in Azure HDInsight. Из следующей статьи вы узнаете, как создать кластер HDInsight Spark и выполнить некоторые запросы Spark SQL.Advance to the next article to learn how to create an HDInsight Spark cluster and run some Spark SQL queries: