В этой статье мы поговорим о том, как можно развернуть приложения, которые используют архитектуру фреймворка Spark. Также рассмотрим сценарий spark-submit и разберем, как с помощью этой команды запускать Spark-приложения.
Что такое сценарий развертывания: особенности взаимодействия клиента и сервера
Приложения, которые создаются на базе архитектуры Spark, можно запускать как на локальных машинах, так и на сервере. За это отвечает специальный сценарий для распределения заданий независимо от типа диспетчера кластера, который называется 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 в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве: