Основы искр Apache

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.

Менеджеры кластеров, поддерживаемые 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, которые кэшируются пользовательскими программами.

RDD

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

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

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

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

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

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

Действия

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

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

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

SparkConf

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

SparkContext

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