Основы Spark Apache

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

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

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

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

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

Выполнение против Spark

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

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

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

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

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

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

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

Кластерные менеджеры, поддержанные Spark

Локальный

Менеджер по кластеру local представляет псевдокластер и работает в нераспределенном режиме над одной машиной. Можно сконфигурировать его, чтобы использовать один рабочий поток, или на многожильной машине, нескольких рабочих потоках. В приложениях это обозначается словом local.

Примечание

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

Автономный

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

Примечание

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

YARN

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

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

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

Примечание

MATLAB Compiler поддерживает менеджера по кластеру YARN только в yarn-client режим.

Mesos

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

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

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

Примечание

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

Драйвер

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

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

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

  • Запланируйте задачи на исполнителей.

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

Если драйвер завершает работу, приложение закончено.

Примечание

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

Исполнитель

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

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

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

RDD

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

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

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

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

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

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

Действия

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

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

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

SparkConf

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

SparkContext

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