Какой тип кластера я должен выбрать для Spark?
Я новичок в Apache Spark, и я только что узнал, что Spark поддерживает три типа кластера:
- Автономный - значит, Spark будет управлять собственным кластером
- YARN - с помощью диспетчера ресурсов Hadoop YARN
- Проект Mesos - Apache, посвященный управлению ресурсами
Поскольку я новичок в Spark, я думаю, что сначала должен попробовать Автономный. Но мне интересно, какой из них рекомендуется. Скажем, в будущем мне нужно построить большой кластер (сотни экземпляров), к какому типу кластера я должен перейти?
Ответы
Ответ 1
Я думаю, что лучше всего ответить, это те, кто работает на Spark. Итак, из Learning Spark
Начните с автономного кластера, если это новое развертывание. Автономный режим проще всего настроить и обеспечит почти все те же функции, что и другие администраторы кластера, если вы только работает Spark.
Если вы хотите запустить Spark вместе с другими приложениями или использовать более богатые возможности планирования ресурсов (например, очереди), как YARN, так и Эти функции обеспечивают Mesos. Из них YARN, скорее всего, будет предустановлен во многих дистрибутивах Hadoop.
Одним из преимуществ Mesos как для YARN, так и для автономного режима является его мелкозернистый вариант совместного использования, который позволяет интерактивным приложениям так как оболочка Spark уменьшает распределение CPU между командами. Это делает его привлекательным в средах, в которых запуск интерактивных оболочек.
Во всех случаях лучше всего запускать Spark на тех же узлах, что и HDFS для быстрый доступ к хранилищу. Вы можете установить Mesos или автономный менеджер кластера на тех же узлах вручную или большинство Hadoop дистрибутивы уже устанавливают YARN и HDFS вместе.
Ответ 2
Spark Standalone Manager: простой менеджер кластера, включенный в Spark, который упрощает настройку кластера. По умолчанию каждое приложение использует все доступные узлы в кластере.
Несколько преимущества YARN над автономным и мезосом:
-
YARN позволяет динамически совместно использовать и централизованно настраивать один и тот же пул ресурсов кластера между всеми фреймворками, которые работают на YARN.
-
Вы можете использовать все возможности планировщиков YARN для категоризации, выделения и определения приоритетов рабочих нагрузок.
-
В автономном режиме Spark требуется, чтобы каждое приложение запускало исполнителя на каждом node в кластере; тогда как с YARN вы выбираете количество исполнителей для использования
-
YARN напрямую обрабатывает местоположение стойки и машины в ваших запросах, что удобно.
-
Модель запроса ресурсов, как ни странно, обратная в Mesos. В YARN вы (каркас) запрашиваете контейнеры с заданной спецификацией и задаете локальные настройки. В Mesos вы получаете "предложения" ресурсов и выбираете принимать или отклонять те, которые основаны на вашей собственной политике планирования. Модель Mesos является, возможно, более гибкой, но, по-видимому, более эффективной для человека, реализующего инфраструктуру.
-
Если у вас уже есть большой кластер Hadoop, лучше выбрать YARN.
-
Автономный менеджер требует, чтобы пользователь настраивал каждый из узлов с общим секретом. Mesos модуль аутентификации по умолчанию, Cyrus SASL, может быть заменен настраиваемым модулем. YARN имеет защиту для аутентификации, авторизацию уровня обслуживания, аутентификацию для веб-консолей и конфиденциальность данных. Аутентификация Hadoop использует Kerberos для проверки подлинности каждого пользователя и службы Kerberos.
- Высокая доступность предоставляется всеми тремя диспетчерами кластера, но Hadoop YARN не нуждается в запуске отдельного контроллера отказоустойчивости ZooKeeper.
Полезные ссылки:
spark
agildata статья
Ответ 3
Автономный довольно ясен, поскольку другие упоминают, что он должен использоваться только тогда, когда у вас есть только рабочая нагрузка.
Между пряжей и мезосом, одна вещь, которую следует учитывать, заключается в том, что в отличие от mapreduce, искровое задание захватывает исполнителей и удерживает его на протяжении всей работы. где в mapreduce работа может получать и выпускать картографы и редукторы на протяжении всей жизни.
если у вас есть длинные искровые задания, которые в течение всего жизненного цикла работы не полностью используют все ресурсы, которые он получил в начале, вы можете поделиться этими ресурсами с другим приложением и что вы можете выполнять только через Mesos или Динамическое планирование Spark. https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications
Таким образом, с пряжей, только способ имеет динамическое распределение для искры, используя искра, обеспечивающую динамическое распределение. Пряжа не будет мешать этому, пока Месос будет. Опять же, весь этот момент имеет значение только в том случае, если у вас длинное искровое приложение, и вы хотели бы масштабировать его вверх и вниз динамически.