Масштабирование кластера DCOS

У меня есть кластер DCOS с 3 узлами агента; У меня есть несколько сервисов, таких как искра, работающая на DCOS.

  1. Если я масштабирую свой кластер DCOS, нужно ли мне также масштабировать искру (потому что, если я добавлю 4-й узел в кластер DCOS и когда я запущу задание искры, мастер может выделить ресурсы для выполнения задания искры на 4-м узле где искра не установлена ​​и, следовательно, она выйдет из строя)?

По моим наблюдениям, я обнаружил, что задания отправляются на любой узел, который видит мастер Mesos.

  1. Есть ли способ указать, что задание Spark не запускается на определенных узлах?

person Manikandan Kannan    schedule 13.02.2017    source источник
comment
Поскольку не было объяснено отрицательное голосование, я снова голосую за ноль.   -  person ImDarrenG    schedule 14.02.2017


Ответы (1)


  1. По умолчанию нет, поэтому вам придется масштабировать Spark. В этом контексте под масштабом я подразумеваю добавление большего количества исполнителей. Нет необходимости выполнять какие-либо дополнительные установки пакетов для поддержки этого.

Динамическое размещение может помочь, но я его не использовал:

http://spark.apache.org/docs/latest/running-on-mesos.html#dynamic-resource-allocation-with-mesos

http://spark.apache.org/docs/latest/job-scheduling.html#dynamic-resource-allocation

  1. Вы можете контролировать, где выполняются задания в Marathon, но, насколько мне известно, не в Spark, через DCOS. Я думаю, вы сможете добиться этого в базовой конфигурации Mesos, но это не рекомендуется. Вы можете создать несколько «кластеров» Spark в одном кластере DCOS и выбрать, какой экземпляр spark отправлять:

Чтобы установить несколько экземпляров пакета DC/OS Spark, задайте для каждого service.name уникальное имя (например, «spark-dev») в файле конфигурации JSON во время установки:

{
  "service": {
    "name": "spark-dev"
  }
}

Чтобы использовать конкретный экземпляр Spark из CLI DC/OS Spark:

$ dcos config set spark.app_id <service.name>

https://docs.mesosphere.com/1.8/usage/service-guides/spark/install/

person ImDarrenG    schedule 13.02.2017
comment
На 1 я ожидаю, что DCOS автоматически поймет, где установлен Spark, и соответственно назначит ресурсы. В противном случае, если у меня кластер DCOS из 500 узлов, мне, возможно, придется установить Spark на каждом узле, что не очень хорошо. Как вы думаете, поможет ли сервисное обнаружение в этом случае? - person Manikandan Kannan; 14.02.2017
comment
Вам не нужно устанавливать Spark вручную на каждом узле, если вы используете DCOS, вы устанавливаете «пакет» Spark один раз, используя интерфейс командной строки DCOS, который позаботится о ручном подъеме. Извините, если я ввел вас в заблуждение там. Дистрибутив Spark управляется образом докера. По крайней мере, при установке DCOS по умолчанию это так. - person ImDarrenG; 14.02.2017
comment
Если я устанавливаю пакет Spark на DC/OS, я вижу, что он устанавливается на узлах в кластере в зависимости от требуемого количества экземпляров. Spark не будет установлен на всех узлах, т.е. если у вас 100 узлов в кластере, и если я установлю spark только с 5 экземплярами, он будет установлен только на максимум 5 машинах. Теперь проблема заключается в том, что при отправке задания Spark Mesos выделяет ресурсы узлам, на которых Spark не установлен. Следовательно, это терпит неудачу. Я видел эту ситуацию и ожидал, что DC/OS будет выделять ресурсы только на тех узлах, где установлен Spark. Мысли? - person Manikandan Kannan; 14.02.2017
comment
Это не то поведение, которое я наблюдал, и оно кажется противоречащим моему опыту работы с DCOS. AFAIK DCOS извлекает образ докера, содержащий дистрибутив Spark, при отправке задания, Spark никогда не устанавливается на узлах, как в автономном режиме. Как вы отправляете задание Spark — через интерфейс командной строки DCOS или какой-либо другой механизм? Я где-то неправильно понял ситуацию? - person ImDarrenG; 14.02.2017
comment
Задание Spark запускается командой dcos spark run. Спарк никогда не устанавливается? Итак, когда пакет Spark установлен, какие задачи я вижу в пользовательском интерфейсе DC/OS, пользовательском интерфейсе Marathon, пользовательском интерфейсе Mesos? я вижу каждый пользовательский интерфейс, и когда я запускаю задание, я вижу, что драйвер работает на одном узле агента, а задачи задания выполняются на других узлах. - person Manikandan Kannan; 14.02.2017
comment
Он работает внутри контейнеров докеров, извлеченных из центра докеров мезосферы hub.docker.com/r/mesosphere/. искра - person ImDarrenG; 14.02.2017
comment
Давайте продолжим обсуждение в чате. - person Manikandan Kannan; 14.02.2017