Какой тип кластера мне выбрать для Spark?

Я новичок в Apache Spark, и я только что узнал, что Spark поддерживает три типа кластеров:

  • Автономный - это означает, что Spark будет управлять своим собственным кластером
  • YARN - с помощью менеджера ресурсов Hadoop YARN
  • Mesos - проект менеджера ресурсов Apache

Так как я новичок в Spark, я думаю, что я должен сначала попробовать Standalone. Но мне интересно, какой из них рекомендуется. Скажем, в будущем мне нужно построить большой кластер (сотни экземпляров), к какому типу кластеров мне следует перейти?

5 ответов

Решение

Думаю, лучше всего ответить тем, кто работает на Spark. Итак, из Learning Spark

Начните с автономного кластера, если это новое развертывание. Автономный режим является самым простым в настройке и предоставляет почти все те же функции, что и другие менеджеры кластеров, если вы используете только Spark.

Если вы хотите запускать Spark вместе с другими приложениями или использовать более широкие возможности планирования ресурсов (например, очереди), то и YARN, и Mesos предоставляют эти функции. Из них YARN, вероятно, будет предустановлен во многих дистрибутивах Hadoop.

Одним из преимуществ Mesos над YARN и автономным режимом является его тонкая опция совместного использования, которая позволяет интерактивным приложениям, таким как оболочка Spark, сокращать распределение ресурсов ЦП между командами. Это делает его привлекательным в средах, где несколько пользователей используют интерактивные оболочки.

Во всех случаях лучше всего запускать Spark на тех же узлах, что и HDFS, для быстрого доступа к хранилищу. Вы можете установить Mesos или автономный менеджер кластеров на одни и те же узлы вручную, или большинство дистрибутивов Hadoop уже устанавливают YARN и HDFS вместе.

Spark Standalone Manager: простой диспетчер кластеров, включенный в Spark, который упрощает настройку кластера. По умолчанию каждое приложение использует все доступные узлы в кластере.

Несколько преимуществ YARN по сравнению с Standalone & Mesos:

  1. YARN позволяет динамически обмениваться и централизованно настраивать один и тот же пул ресурсов кластера между всеми платформами, работающими на YARN.

  2. Вы можете воспользоваться всеми функциями планировщиков YARN для категоризации, изоляции и определения приоритетов рабочих нагрузок.

  3. Автономный режим Spark требует, чтобы каждое приложение запускало исполнителя на каждом узле кластера; тогда как с YARN вы выбираете количество исполнителей для использования

  4. YARN напрямую обрабатывает расположение стеллажей и машин в ваших запросах, что удобно.

  5. Модель запроса ресурсов, как ни странно, обратна в Месосе. В YARN вы (инфраструктура) запрашиваете контейнеры с заданной спецификацией и задаете предпочтения локальности. В Mesos вы получаете "предложения" ресурсов и выбираете, принимать или отклонять их, основываясь на собственной политике планирования. Модель Mesos является, возможно, более гибкой, но, по-видимому, более трудоемкой для человека, внедряющего фреймворк.

  6. Если у вас уже есть большой кластер Hadoop, YARN - лучший выбор.

  7. Автономный менеджер требует, чтобы пользователь настраивал каждый из узлов с общим секретом. Модуль аутентификации Mesos по умолчанию, Cyrus SASL, можно заменить пользовательским модулем. YARN обладает безопасностью для аутентификации, авторизации уровня обслуживания, аутентификации для веб-консолей и конфиденциальности данных. Аутентификация Hadoop использует Kerberos для проверки подлинности Kerberos для каждого пользователя и службы.

  8. Высокая доступность обеспечивается всеми тремя менеджерами кластеров, но Hadoop YARN не нужно запускать отдельный контроллер отказоустойчивости ZooKeeper.

Полезные ссылки:

страница документации искры

статья agildata

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

Между пряжей и мезо, следует учитывать тот факт, что в отличие от mapreduce, искра работы захватывает исполнителей и удерживает их в течение всей жизни. где в Mapreduce работа может получить и выпустить картографы и редукторы в течение жизни.

если у вас есть долго выполняющиеся задания спарка, которые в течение срока службы задания не полностью используют все ресурсы, которые были получены в начале, вы можете поделиться этими ресурсами с другим приложением, и это можно сделать только с помощью динамического планирования Mesos или Spark., https://spark.apache.org/docs/2.0.2/job-scheduling.html Таким образом, для пряжи единственным способом динамического выделения для искры является использование динамического выделения, обеспеченного искрой. Пряжа не будет вмешиваться в это, в то время как Месос будет. Опять же, весь этот пункт важен только в том случае, если у вас есть длительное приложение Spark, и вы хотите динамически увеличивать и уменьшать его.

Mesos имеет более сложный дизайн планирования, позволяющий таким приложениям, как Spark, договариваться с ним. Это больше подходит для разнообразия приложений сегодня. Я нашел этот сайт действительно проницательным:

https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn

"... YARN оптимизирован для планирования заданий Hadoop, которые исторически (и до сих пор обычно) являются пакетными заданиями с длительным временем выполнения. Это означает, что YARN не был разработан для долгосрочных служб или для краткосрочных интерактивных запросов (например, небольших). и быстрые задания Spark), и хотя можно запланировать другие виды рабочих нагрузок, это не идеальная модель. Потребности в ресурсах, модель выполнения и архитектурные требования MapReduce сильно отличаются от требований для долго работающих сервисов, таких как как веб-серверы или приложения SOA, или рабочие нагрузки в реальном времени, такие как Spark или Storm..."

В этом случае и подобных дилеммах в инженерии данных есть много побочных вопросов, на которые нужно ответить, прежде чем выбрать один метод распределения вместо другого. Например, если вы не используете свой механизм обработки более чем на 3 узлах, вы обычно не сталкиваетесь с слишком большой проблемой, чтобы справиться с ней, поэтому разница в настройке производительности между YARN и SparkStandalone (на основе опыта) не прояснит ваше решение. Потому что обычно вы пытаетесь сделать свой конвейер простым, особенно когда ваши сервисы не управляются облаком самостоятельно, а ошибки и сбои случаются часто.

Я выбираю автономный режим для относительно небольших или несложных конвейеров, но если я чувствую себя хорошо и у меня уже есть кластер Hadoop, я предпочитаю использовать все дополнительные конфигурации, которые мне может предоставить Hadoop(Yarn).

Другие вопросы по тегам