exponenta event banner

Основы Apache Spark

Apache Spark™ - быстрый двигатель общего назначения для крупномасштабной обработки данных.

Каждое Spark™ приложение состоит из программы драйвера, которая управляет выполнением приложения в кластере. Работники кластера с поддержкой Spark называются исполнителями. Процесс драйвера запускает код пользователя для этих исполнителей.

В типичном приложении Spark код устанавливает SparkContext, создает из внешних данных отказоустойчивый распределенный набор данных (RDD), а затем выполняет методы, известные как преобразования и действия с этим RDD, чтобы получить результат анализа.

RDD является основной абстракцией программирования в Spark и представляет неизменяемую коллекцию элементов, разбитых по узлам кластера, которые могут работать параллельно. Приложение Spark может запускаться локально на одном компьютере или в кластере.

Spark в основном написан на Scala и имеет API на других языках программирования, включая MATLAB ®. API MATLAB для Spark предоставляет модель программирования Spark MATLAB и обеспечивает реализацию MATLAB многочисленных функций Spark. Многие из этих реализаций MATLAB функций Spark принимают дескрипторы функций или анонимные функции в качестве входных данных для выполнения различных типов анализа.

Бег против искры

Запуск против Spark означает выполнение приложения против кластера с поддержкой Spark с помощью поддерживаемого диспетчера кластера. Кластер может быть локальным или сетевым. Вы можете бежать против Spark двумя способами:

  • Выполнение команд в интерактивной оболочке, подключенной к Spark.

  • Создание и выполнение автономного приложения в кластере Spark.

При использовании интерактивной оболочки Spark позволяет взаимодействовать с данными, распространяемыми на диске или в памяти на многих машинах, и выполнять оперативный анализ. Компания Spark следит за основным распределением работ по различным машинам. Интерактивные оболочки доступны только в Python ® и Scala.

API MATLAB для Spark в MATLAB Compiler™ предоставляет интерактивную оболочку, подобную оболочке Spark, которая позволяет отладить приложение перед его развертыванием. Интерактивная оболочка работает только на локальном кластере.

При создании и выполнении автономных приложений для Spark приложения сначала упаковываются или компилируются как автономные приложения перед выполнением в кластере с поддержкой Spark. Можно создавать автономные приложения в Scala, Java ®, Python и MATLAB.

API MATLAB для Spark в компиляторе MATLAB позволяет создавать автономные приложения, которые могут работать с Spark.

Диспетчеры кластеров, поддерживаемые Spark

Местный

Локальный диспетчер кластеров представляет псевдокластер и работает в неразмещенном режиме на одной машине. Его можно настроить на использование одного рабочего потока или нескольких рабочих потоков на многоядерном компьютере. В приложениях обозначается словом local.

Примечание

API MATLAB for Spark, позволяющий интерактивно отлаживать приложения, работает только с локальным диспетчером кластеров.

Автономный

Менеджер кластера Standalone поставляется с Spark. Он состоит из мастера и нескольких работников. Чтобы использовать автономный диспетчер кластеров, разместите скомпилированную версию Spark на каждом узле кластера. Автономный диспетчер кластеров можно запустить с помощью сценариев, предоставленных Spark. В приложениях он обозначается как: spark://host:port. Номер порта по умолчанию: 7077.

Примечание

Менеджера кластера Standalone, поставляемого с Spark, не следует путать с автономным приложением, которое может работать с Spark. Компилятор MATLAB не поддерживает автономный диспетчер кластеров.

ПРЯЖА

Менеджер кластера YARN был представлен в Hadoop ® 2.0. Обычно он устанавливается на тех же узлах, что и HDFS™. Поэтому запуск Spark на YARN позволяет Spark легко получать доступ к данным HDFS. В приложениях обозначается с помощью терминаyarn. Есть два режима, которые доступны при запуске приложений на YARN:

  • В yarn-client драйвер работает в клиентском процессе, а мастер приложения используется только для запроса ресурсов из YARN.

  • В yarn-cluster в режиме, драйвер Spark работает внутри главного процесса приложения, который управляется YARN в кластере, и клиент может удалиться после запуска приложения.

Примечание

Компилятор MATLAB поддерживает диспетчер кластеров YARN только в yarn-client режим.

Меза

Менеджер кластеров Mesos - это менеджер кластеров с открытым исходным кодом, разработанный компанией Apache™. В приложениях обычно обозначается как: mesos://host:port. Номер порта по умолчанию: 5050.

Примечание

Компилятор MATLAB не поддерживает менеджер кластера Mesos.

В следующей таблице показано, какой параметр развертывания компилятора MATLAB поддерживается каждым диспетчером кластера.

Параметр «Развернуть против искры»Локальный кластер (local)Кластер Хэдупа (yarn-client)

Развертывание автономных приложений, содержащих массивы tall.

Не поддерживается.

Поддерживается.

Развертывание автономных приложений, созданных с помощью API MATLAB для Spark.

Поддерживается.

Поддерживается.

Интерактивная отладка приложений с помощью API MATLAB для Spark.

Поддерживается.

Не поддерживается.

Отношения между искрой и Хэдупом

Отношения между Spark и Hadoop вступают в силу, только если вы хотите запустить Spark на кластере, на котором установлен Hadoop. В противном случае Hadoop не нужен для запуска Spark.

Для запуска Spark в кластере необходима общая файловая система. Кластер Hadoop обеспечивает доступ к распределенной файловой системе через HDFS и менеджер кластера в форме YARN. Spark может использовать YARN в качестве менеджера кластера для распределения работы и использовать HDFS для доступа к данным. Кроме того, некоторые приложения Spark могут использовать модель программирования MapReduce от Hadoop, но MapReduce не является базовой моделью программирования в Spark.

Hadoop не требуется для запуска Spark в кластере. Можно также использовать другие параметры, такие как Mesos.

Примечание

Параметры развертывания в компиляторе MATLAB в настоящее время поддерживают развертывание только в кластере Hadoop с поддержкой Spark.

Водитель

Каждое приложение Spark состоит из программы драйвера, которая инициирует различные операции в кластере. Драйвер - это процесс, в котором main() способ выполнения программы. Процесс драйвера запускает код пользователя, который создает SparkContext, создает RDD и выполняет преобразования и действия. При исполнении драйвера Spark он выполняет две обязанности:

  • Преобразование пользовательской программы в задачи.

    Приложение драйвера Spark отвечает за преобразование пользовательской программы в единицы физического выполнения, называемые задачами. Задания - наименьшая единица работы в «Огоньке».

  • Планирование задач для исполнителей.

    Драйвер Spark пытается запланировать каждую задачу в соответствующем месте на основе размещения данных. Он также отслеживает расположение кэшированных данных и использует их для планирования будущих задач, имеющих доступ к этим данным.

После завершения работы драйвера приложение завершается.

Примечание

При использовании API MATLAB для Spark в компиляторе MATLAB код приложения MATLAB становится программой драйвера Spark.

Исполнитель

Исполнитель Spark - это рабочий процесс, ответственный за выполнение отдельных задач в данном задании Spark. Исполнители запускаются в начале приложения Spark и сохраняются в течение всего срока действия приложения. Исполнители выполняют две роли:

  • Запустите задачи, составляющие приложение, и верните результаты в драйвер.

  • Предоставление памяти для RDD, кэшированных пользовательскими программами.

RDD

Отказоустойчивый распределенный набор данных или RDD - это абстракция программирования в Spark. Он представляет собой совокупность элементов, распределенных по множеству узлов, которые могут работать параллельно. RDD, как правило, отказоустойчивы. RDD можно создавать двумя способами:

  • Путем загрузки внешнего набора данных.

  • Путем распараллеливания набора объектов в программе драйвера.

После создания с помощью РДД можно выполнять два типа операций: преобразования и действия.

Преобразования

Преобразования - это операции с существующим RDD, которые возвращают новый RDD. Многие, но не все, преобразования - это элементарные операции.

Действия

Действия вычисляют конечный результат на основе RDD и либо возвращают этот результат в программу драйвера, либо сохраняют его во внешней системе хранения данных, такой как HDFS.

Различие между преобразованиями и действиями

Проверьте тип возвращаемых данных. Преобразования возвращают RDD, в то время как действия возвращают другие типы данных.

SparkConf

SparkConf сохраняет параметры конфигурации развертываемого приложения в Spark. Перед развертыванием в кластере Spark необходимо настроить все приложения. Некоторые параметры конфигурации определяют свойства приложения, а некоторые используются Spark для выделения ресурсов в кластере. Параметры конфигурации передаются в кластер Spark через SparkContext.

SparkContext

 SparkContext представляет соединение с кластером Spark. Это точка входа в Spark и настройка внутренних служб, необходимых для подключения к среде выполнения Spark.