Apache Spark - обзор режима "кластер" (cluster)

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

Компоненты:
Spark приложение запускается как массив независимых процессов на кластере, координацией которых занимается объект SparkContext в вашей программе(называется она driver program).

В режиме кластера, SparkContext может работать в паре с одним из нескольких менеджеров кластера (собственный менеджер менеджер кластера, Мesos или YARN), который выделяет ресурсы для приложений. Единожды присоединившись, Spark получает исполнителей (executors) на ноде в кластере, которые обрабатывают вычисления и сохраняют данные для вашего приложения. В итоге, SparkContext отсылает задачи (tasks) к исполнителям для обработки.
Нужно отметить несколько полезных особенностей в этой архитектуре:

  1. Каждое приложение получает свой собственный процес-исполнитель, который остается запущеным на продолжении всего времени работы приложения и запускает таски в многопоточном режиме. Это приемущество в виде изоляции приложений друг от друга, дает позитивный результат сразу в двух точках плинирования. Каждый driver составляет расписание своих собственных тасок) и каждая таска-исполнитель с разных приложений запускается с разных JVMs. Тем не менее,  это также означает что данные не могут быть доступны между разными Spark приложениями(экземпляры SparkContext) без записи во внешнее хранилище.
  2. Spark равнодушный к нижележащему менеджеру кластера. Относительно легко запустить любой другой менеджер кластера(например Mesos/YARN)
  3. Driver программа должна слушать и получать входящие соединения от исполнителей на протяжении жизненного цикла. По сути, driver программа должна быть сетью с адресацией от нод-исполнителей
  4. Потому что планировщик таск запущен на кластере, он должен быть ближе к рабочим нодам, желательно в одной локальной сети.
Типы менеджеров кластера:
На текущий момент система поддерживает три менеджера кластера:
  • Автономный(Standalone) - Простой менеджер кластера входящий в Spark позволяет упростить установку кластера
  • Apache Mesos - основный менеджер кластера что также может запускать Hadoop MapReduce задачи
  • Hadoop YARN - ресурс менеджер в Hadoop 2
В дополнение, Spark-овский "EC2 launch scripts" упрощает запуск автономного кластера на Amazon EC2.

Запуск приложений
Приложение может быть запущено на кластере в любом удобном формате спомощью скрипта "spark-submit".

Мониторинг
Каждая driver программа имеет web UI, обычно доступна по порту 4040 и отображает информацию о запущеных тасках, исполнителях, использовании хранилища. 

Планировщий джобов
Spark предоставляет контроль над выделением ресурсов как в самом приложении(на уровне менеджера кластера) так и в нутри приложения(при многопоточном вычислении спомощью SparkContext)

Словарь :)
В следующей таблице приведены термины, которые используют для обозначения понятия кластера:
ТерминОбозначение
Application Приложение пользователя созданное на Spark. Состоит с driver program and executors на кластере.
Application jar A jar содержит пользователькое Spark приложение. В некоторых случаях можно создавать "uber jar" содержащий приложение отдельно от его зависимостей. Пользовательский jar не должен включать Hadoop или Spark библиотеки.
Driver program Процес выполняющий main() функцию приложения и создающий SparkContext
Cluster manager Внешний сервис для  для управления ресурсами на кластере (например standalone manager, Mesos, YARN)
Deploy mode Отличается в зависимости где запущен driver процесс. В режиме "cluster" , фреймворк запускает driver внутри кластера.В режиме "client", submitter запускает driver вне кластера.
Worker node Любая нода в кластере, которая может выполнять код приложения
Executor Процесс запущений приложением на рабочей ноде(worker node), который запускает таски и хранит данные в памьяти или на диске. Каждое приложение имеет своих собственных ысполнителей(executors).
Task Единица работы, что может быть отослана исполнителю(executor)
Job Паралельное вычисление состоящее с множества тасок, что были созданны в ответ на действия Spark-а (например save, collect); вы увидите эти слова в driver's логах.
Stage Каждый job делится на меньшие наборы задач, которые называются этапы(stages), что зависят друг от друга(подобно map и reduce этапы в MapReduce);  вы увидите этот термин в driver's логах



Коментарі

Популярні дописи з цього блогу

Минимальные требование для кластера Hadoop(with Spark)

Apache Spark - основные команды

Apache Spark Resource Management и модель приложений от YARN