Подтвердить что ты не робот

Планировщики и исполнители Apache Mesos на примере

Я пытаюсь понять, как работают различные компоненты Mesos, и нашел этот отличный учебник, который содержит следующий архитектурный обзор:

enter image description here

У меня есть несколько опасений по этому поводу, которые не уточняются (либо в статье, либо в официальных документах Mesos):

  • Где работают Планировщики? Существуют ли узлы планировщика, где должны работать только планировщики?
  • Если бы я писал свою собственную структуру Mesos, какую функциональность планировщика мне нужно было бы реализовать? Это всего лишь двоичный ответ yes/no или accept/reject для предложений, отправленных Мастером? Какие-нибудь конкретные примеры?
  • Если бы я писал свою собственную структуру Mesos, какую функциональность Executor мне нужно было бы реализовать? Какие-нибудь конкретные примеры?
  • Какой конкретный пример задачи, которая будет отправлена ​​Исполнителю?
  • Являются ли исполнители "закрепленными" (постоянно установленными) Slaves или они плавают по типу "по требованию", устанавливаются и выполняются динамически/на лету?
4b9b3361

Ответ 1

Отличные вопросы! Я считаю, что было бы очень полезно посмотреть примерную структуру, такую ​​как Rendler. Это, вероятно, ответит на большинство ваших вопросов и даст вам ощущение внутренней структуры.

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

  • Местоположение планировщика

Планировщики не включены на каких-либо специальных узлах, но имейте в виду, что планировщики могут также работать с отказом (как любая часть в распределенной системе).

  • Функциональность планировщика

Посмотрите на Rendler или в руководстве по разработке каркаса.

  • Функциональность/Задача исполнителя

Я считаю, что Rendler - хороший пример для понимания отношений Задачи/Исполнителя. Просто начните читать README/описание на главной странице github.

  • Назначение исполнителя

Исполнители запускаются на каждом node, когда первая задача, требующая такого исполнителя, отправляется на этот node. После этого он останется на этом node.

Надеюсь, это помогло!

Ответ 2

Чтобы добавить к js84 отличный отклик,

  • Местоположение планировщика. Многим пользователям нравится запускать планировщики через другую инфраструктуру, такую ​​как Marathon, чтобы гарантировать, что если планировщик или его node умирает, его можно перезапустить в другом месте.
  • Функциональность планировщика: после регистрации в Mesos ваш планировщик начнет получать предложения ресурсов в обратном вызове resourceOffers(), в котором планировщик должен запустить (по крайней мере) одну задачу для подмножества (или всех) ресурсов, которые предлагаются. Вероятно, вы также захотите реализовать обратный вызов statusUpdate() для обработки/завершения задачи. Обратите внимание, что вам может даже не понадобиться реализовать собственный планировщик, если может существовать существующая инфраструктура, такая как Marathon/Chronos/Aurora/Kubernetes.
  • Функциональность исполнителя: обычно вам не нужно создавать пользовательский исполнитель, если вы просто хотите запустить Linux-процесс или контейнер-докер и знать, когда он будет завершен. Вы могли бы просто использовать mesos-executor по умолчанию (указав CommandInfo непосредственно в TaskInfo вместо встроенного внутри ExecutorInfo). Если, однако, вы хотите создать пользовательский исполнитель, как минимум вам нужно реализовать launchTask(), а в идеале и killTask().
  • Пример задачи. Примерной задачей может быть простая команда linux, например sleep 1000 или echo "Hello World", или контейнер докера (через ContainerInfo), например image : 'mysql'. Или, если вы используете пользовательский исполнитель, тогда исполнитель определяет, что такое задача и как ее запускать, поэтому вместо этого можно было бы запустить задачу как другой поток в процессе выполнения, или просто стать элементом в очереди в однопользовательском режиме, поточный исполнитель.
  • Назначение исполнителей: исполнитель распределяется через URI CommandInfo, как и любые двоичные файлы задач, поэтому их не нужно предварительно устанавливать на узлах. Mesos будет получать и запускать его для вас.

Ответ 3

Планировщики: - это стратегия принятия или отклонения предложения. Планировщики мы можем написать самостоятельно, или мы можем использовать некоторые существующие, например, хроносы. В планировщике мы должны оценить доступные ресурсы, а затем либо принять, либо отклонить.

Функциональность планировщика: Пример может быть похож, предположим, что у вас есть задача, для которой требуется 8 процессоров, но предложение от мезо может составлять 6 cpus, что не будет служить в этом случае u может отклоняться.

Функциональность исполнителя: Исполнитель обрабатывает информацию о состоянии вашей задачи. Набор API-интерфейсов, который необходимо реализовать, например, как статус назначенной задачи в ведомости mesos. Какое количество процессоров доступно в настоящее время в ведомости mesos, где выполняется исполнитель.

конкретный пример для исполнителя: chronos

устанавливается и выполняется динамически/на лету:. Это невозможно, вам нужно предварительно настроить исполнителей. Однако вы можете реплицировать исполнителей, используя автомасштабирование.