Apache Spark™ является быстрым, универсальным двигателем для крупномасштабной обработки данных.
Каждое Spark™ приложение состоит из driver программы, которая управляет выполнением вашего приложения в кластере. Работники кластера с поддержкой Spark называются executors. Процесс драйвера запускает пользовательский код на этих исполнителях.
В типичном приложении Spark ваш код установит SparkContext, создаст Resilient Distributed Dataset (RDD) из внешних данных, а затем выполнит методы, известные как transformations и actions на этом RDD, чтобы прийти к результату анализа.
RDD является основной абстракцией программирования в Spark и представляет собой неизменяемый набор элементов, разделенных между узлами кластера, которая может эксплуатироваться параллельно. Приложение Spark может запускаться локально на одной машине или в кластере.
Spark в основном написан на Scala и имеет API на других языках программирования, включая MATLAB®. MATLAB API для Spark выставляет модель программирования Spark на MATLAB и включает реализации MATLAB многочисленных функций Spark. Многие из этих реализаций функций Spark MATLAB принимают указатели на функцию или анонимные функции в качестве входов для выполнения различных типов анализа.
Запуск против Spark означает выполнение приложения против кластера с поддержкой Spark с помощью поддерживаемого диспетчера кластеров. Кластер может быть локальным или находиться в сети. Против Spark можно бежать двумя способами:
Выполните команды в интерактивном интерпретаторе, которая соединена с Spark.
Создайте и выполните автономное приложение против кластера Spark.
При использовании интерактивного интерпретатора Spark позволяет взаимодействовать с данными, которые распределяются на диске или в памяти по многим машинам, и выполнять оперативный анализ. Spark заботится о базовом распределении работы между различными машинами. Интерактивные интерпретаторы доступны только на Python® и Скала.
MATLAB API для Spark в MATLAB Compiler™ предоставляет интерактивный интерпретатор, подобную интерпретатору Spark, которая позволяет отлаживать приложение до его развертывания. Интерактивный интерпретатор работает только против локального кластера.
При создании и выполнении автономных приложений против Spark приложения сначала упаковываются или компилируются как автономные приложения перед выполнением в кластере с поддержкой Spark. Вы можете создавать автономные приложения в Scala, Java®, Python и MATLAB.
MATLAB API для Spark в MATLAB Compiler позволяет создавать автономные приложения, которые могут запускаться против Spark.
Менеджер local кластеров представляет псевдокластер и работает в неразраспределенном режиме на одной машине. Можно настроить его так, чтобы использовать один рабочий поток, или на многоядерной машине, несколько рабочих потоков. В приложениях обозначается словом local
.
Примечание
MATLAB API for Spark, позволяющий в интерактивном режиме отлаживать приложения, работает только с локальным менеджером кластеров.
Менеджер Standalone кластеров поставляется с Spark. Он состоит из мастера и нескольких работников. Чтобы использовать автономный менеджер кластеров, разместите скомпилированную версию Spark на каждом узле кластера. Автономный менеджер кластеров может быть запущен с помощью скриптов, предоставленных Spark. В приложениях обозначается как: spark://host:port
. Номер порта по умолчанию 7077
.
Примечание
Диспетчер кластеров Standalone, который поставляется с Spark, не следует путать с автономным приложением, которое может работать против Spark. MATLAB Compiler не поддерживает автономный менеджер кластеров.
В Hadoop был представлен менеджер кластеров YARN® 2.0. Он обычно устанавливается на тех же узлах, что и HDFS™. Поэтому запуск Spark на YARN позволяет Spark легко получить доступ к данным HDFS. В приложениях обозначается с помощью термина yarn
. Существует два режима, которые доступны при запуске приложений на YARN:
В yarn-client
драйвер запускается в клиентском процессе, а хозяин приложения используется только для запроса ресурсов от YARN.
В yarn-cluster
драйвер Spark запускается внутри главного процесса приложения, управляемого YARN в кластере, и клиент может завершить работу после инициирования приложения.
Примечание
MATLAB Compiler поддерживает менеджер кластеров YARN только в yarn-client
режим.
Менеджер кластеров Mesos - это менеджер кластеров с открытым исходным кодом, разработанный Apache™. В приложениях обычно обозначается как: mesos://host:port
. Номер порта по умолчанию 5050
.
Примечание
MATLAB Compiler не поддерживает диспетчер кластеров Mesos.
Можно использовать следующую таблицу, чтобы увидеть, какая опция развертывания MATLAB Compiler поддерживается каждым менеджером кластеров.
Развертывание против опции Spark | Локальный кластер (local ) | Кластер Hadoop (yarn-client ) |
---|---|---|
Развертывание автономных приложений, содержащих длинные массивы. | Не поддерживается. | Поддерживается. |
Развертывание автономных приложений, созданных с помощью MATLAB API для Spark. | Поддерживается. | Поддерживается. |
Интерактивная отладка приложений с помощью MATLAB API для Spark. | Поддерживается. | Не поддерживается. |
Отношения между Spark и Hadoop вступают в игру только в том случае, если вы хотите запустить Spark на кластере, в котором установлен Hadoop. В противном случае вам не нужно, чтобы Hadoop запускал Spark.
Чтобы запустить Spark в кластере, вам нужна общая файловая система. Кластер Hadoop обеспечивает доступ к распределенной файловой системе через HDFS и диспетчер кластеров в форме YARN. Spark может использовать YARN как менеджер кластеров для распределения работы и использовать HDFS для доступа к данным. Кроме того, некоторые приложения Spark могут использовать модель программирования MapReduce от Hadoop, но MapReduce не является основной моделью программирования в Spark.
Hadoop не обязан запускать Spark на кластере. Можно также использовать другие опции, такие как Mesos.
Примечание
Опции развертывания в MATLAB Compiler в настоящее время поддерживают развертывание только на кластере Hadoop с поддержкой Spark.
Каждое приложение Spark состоит из драйвера программы, которая инициирует различные операции в кластере. Драйвер является процессом, в котором main()
метод выполнения программы. Процесс драйвера запускает пользовательский код, который создает SparkContext, создает RDD и выполняет преобразования и действия. Когда драйвер Spark выполняет, он выполняет две обязанности:
Преобразуйте пользовательскую программу в задачи.
Приложение драйвера Spark отвечает за преобразование пользовательской программы в модули физического выполнения, называемые задачами. Задачи являются наименьшим модулем работы в Spark.
Планируйте задачи для исполнителей.
Драйвер Spark пытается запланировать каждую задачу в соответствующем месте, основываясь на размещении данных. Он также отслеживает местоположение кэшированных данных и использует его, чтобы запланировать будущие задачи, которые получают доступ к этим данным.
После завершения работы драйвера приложение будет завершено.
Примечание
При использовании MATLAB API для Spark в MATLAB Compiler код приложения MATLAB становится программой драйвера Spark.
Исполнитель Spark является рабочим процессом, ответственным за выполнение отдельных задач в данном задании Spark. Исполнители запускаются в начале приложения Spark и сохраняются в течение всего срока службы приложения. Исполнители выполняют две роли:
Запустите задачи, составляющие приложение, и верните результаты драйверу.
Обеспечивает память в памяти для RDD, которые кэшируются пользовательскими программами.
Resilient Distributed Dataset или RDD является программной абстракцией в Spark. Он представляет набор элементов, распределенных по многим узлам, которые могут работать параллельно. RDD, как правило, отказоустойчивы. RDD можно создать двумя способами:
Путем загрузки внешнего набора данных.
Путем параллелизации набора объектов в программе драйвера.
После создания можно выполнить два типа операций с помощью RDD: transformations и actions.
Transformations операции на существующем RDD, которые возвращают новый RDD. Многие, но не все, преобразования являются поэлементными операциями.
Actions вычислите конечный результат на основе RDD и либо верните этот результат в программу драйвера, либо сохраните его во внешней системе хранения данных, такой как HDFS.
Проверьте тип возврата данных. Преобразования возвращают RDD, в то время как действия возвращают другие типы данных.
SparkConf сохраняет параметры конфигурации развертываемого приложения в Spark. Каждое приложение должно быть сконфигурировано перед развертыванием на кластере Spark. Некоторые из параметров конфигурации определяют свойства приложения, а некоторые используются Spark для выделения ресурсов в кластере. Параметры конфигурации передаются в кластер Spark через SparkContext
.
A SparkContext представляет соединение с кластером Spark. Он является точкой входа в Spark и настраивает внутренние сервисы, необходимые для установления подключения к окружению выполнения Spark.