Apache Spark - обзор режима "кластер" (cluster)
В этот статье приводится крактий обзор того, как Spark запускается на кластере, для того чтобы проще понять компоненты которые системы.
Компоненты:
Spark приложение запускается как массив независимых процессов на кластере, координацией которых занимается объект SparkContext в вашей программе(называется она driver program).
В режиме кластера, SparkContext может работать в паре с одним из нескольких менеджеров кластера (собственный менеджер менеджер кластера, Мesos или YARN), который выделяет ресурсы для приложений. Единожды присоединившись, Spark получает исполнителей (executors) на ноде в кластере, которые обрабатывают вычисления и сохраняют данные для вашего приложения. В итоге, SparkContext отсылает задачи (tasks) к исполнителям для обработки.
Нужно отметить несколько полезных особенностей в этой архитектуре:
Компоненты:
Spark приложение запускается как массив независимых процессов на кластере, координацией которых занимается объект SparkContext в вашей программе(называется она driver program).
В режиме кластера, SparkContext может работать в паре с одним из нескольких менеджеров кластера (собственный менеджер менеджер кластера, Мesos или YARN), который выделяет ресурсы для приложений. Единожды присоединившись, Spark получает исполнителей (executors) на ноде в кластере, которые обрабатывают вычисления и сохраняют данные для вашего приложения. В итоге, SparkContext отсылает задачи (tasks) к исполнителям для обработки.
Нужно отметить несколько полезных особенностей в этой архитектуре:
- Каждое приложение получает свой собственный процес-исполнитель, который остается запущеным на продолжении всего времени работы приложения и запускает таски в многопоточном режиме. Это приемущество в виде изоляции приложений друг от друга, дает позитивный результат сразу в двух точках плинирования. Каждый driver составляет расписание своих собственных тасок) и каждая таска-исполнитель с разных приложений запускается с разных JVMs. Тем не менее, это также означает что данные не могут быть доступны между разными Spark приложениями(экземпляры SparkContext) без записи во внешнее хранилище.
- Spark равнодушный к нижележащему менеджеру кластера. Относительно легко запустить любой другой менеджер кластера(например Mesos/YARN)
- Driver программа должна слушать и получать входящие соединения от исполнителей на протяжении жизненного цикла. По сути, driver программа должна быть сетью с адресацией от нод-исполнителей
- Потому что планировщик таск запущен на кластере, он должен быть ближе к рабочим нодам, желательно в одной локальной сети.
Типы менеджеров кластера:
На текущий момент система поддерживает три менеджера кластера:
- Автономный(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 логах |
Коментарі
Дописати коментар