Как развертываются Spark-приложения

Spark, фреймворк, Data Science, приложения

В этой статье мы поговорим о том, как можно развернуть приложения, которые используют архитектуру фреймворка Spark. Также рассмотрим сценарий spark-submit и разберем, как с помощью этой команды запускать Spark-приложения.

Что такое сценарий развертывания: особенности взаимодействия клиента и сервера

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

Spark, фреймворк, Data Science, приложения
Взаимодействие клиента с сервером с помощью spark-submit

Этот сценарий имеет в своем арсенале несколько специальных флагов для более эффективного развертывания приложений на сервере, которые мы рассмотрим далее.

Структура сценария spark-submit

Во время запуска spark-submit с одним параметром, которым является имя нашего программного файла, программа запускается локально:

./bin/spark-submit my_application.py

Если необходимо запустить приложение под управлением, например, диспетчера Spark Standalone, можно передать сценарию дополнительные флаги:

./bin/spark-submit --master spark://host:7077 --executor-memory 10g my _ application.py

Флаг --master служит для определения URL кластера для подключения. В данном примере URL spark:// означает, что кластер действует под управлением Spark Standalone. Помимо этого, сценарию spark-submit можно передать множество различных параметров, которые будут описывать некоторые особенности запускаемого приложения. Эти параметры можно разделить на 2 категории:

  • информация для планирования (например, объем ресурсов, необходимых для выполнения задач);
  • сведения о зависимостях приложения (библиотеки или файлы для подгрузки).

Флаг --master имеет следующие возможные значения:

  • spark://host: port – адрес кластера c диспетчером Spark Standalone и порт, по которому он подключен (по умолчанию 7077);
  • mesos://host:port – адрес кластера c диспетчером Mesos и порт, по которому он подключен (по умолчанию 5050);
  • yarn – адрес кластера с диспетчером YARN. Перед запуском требуется обязательно определить переменную окружения HADOOP_CONF_DIR, в которой необходимо указать путь к каталогу с настройками Hadoop;
  • local – запуск на локальной машине;
  • local(N) – запуск на локальной машине с N ядрами;
  • local(*) – запуск на локальной машине с использованием всех ядер.

Кроме флага --master сценарий spark-submit имеет еще несколько часто используемых флагов, среди которых следующие:

  • --deploy-mode – определяет, как должна запускаться программа: локально (client) или на каком-либо из узлов кластера (cluster). По умолчанию используется режим client;
  • --class – определяет главный класс для приложения (в языках JAVA или Scala);
  • --name – имя приложения, отображаемое в веб-интерфейсе Spark;
  • --files – файлы для размещения в рабочем каталоге программы;
  • --py-files – файлы для добавления в переменную окружения PYTONPATH;
  • -- executor-memory – объем памяти в байтах, которая выделяется для исполнителей;
  • --driver-memory – объем памяти, которая выделяется для driver-программы.

Рассмотрим пример запуска приложения на языке Python в клиентском режиме под управлением диспетчера YARN:

./bin/spark-submit \

--master yarn \

--py-files some_file.py \

--deploy-mode client \

--name "My Example App" \

--num-executors 1 \

--executor-memory 1g \ my_application.py

Как мы видим из этого примера, сценарий spark-submit запускает наше приложение в режиме «клиент» на 1 узле-исполнителе и выделяет для этого 1Гб памяти.

Таким образом, распределенная архитектура приложения Spark позволяет ему запускаться не только локально, но и на нескольких удаленных узлах одновременно. Благодаря этому фреймворк Apache Spark является таким полезным инструментом для Data Scientist’а и разработчика Big Data приложений. В следующей статье мы поговорим про настройку и отладку приложений в Spark, а также рассмотрим ключевые факторы, влияющие на производительность приложений, использующих архитектуру этого фреймворка.

Более подробно про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

 

Записаться на курс

Смотреть раcписание

Добавить комментарий

Поиск по сайту