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

Что делает Apache Mesos на самом деле?

Я пытаюсь оборачивать голову Apache Mesos и нуждаюсь в разъяснении по нескольким пунктам.

Мое понимание Mesos заключается в том, что он является исполняемым, который устанавливается на каждом физическом/виртуальном сервере ( "node" ) в кластере и затем предоставляет Java API (каким-то образом), который обрабатывает каждый отдельный node как коллективный пул вычислительных ресурсов (CPU/RAM/и т.д.). Следовательно, для программ, кодирующих Java API, они видят только один набор ресурсов и не должны беспокоиться о том, как/где этот код развертывается.

Итак, для одного, я мог бы быть принципиально неправильным в моем понимании здесь (в этом случае, пожалуйста, поправьте меня!). Но если я нахожусь в цель, то как Java API (предоставляемый Mesos) позволяет Java-клиентам использовать эти ресурсы?!? Может ли кто-нибудь дать конкретный пример Мезоса в действии?


Update

Взгляните на мой ужасный рисунок ниже. Если я правильно понимаю архитектуру Mesos, у нас есть кластер из 3-х физических серверов (phys01, phys02 и phys03). В каждом из этих физических объектов работает хост Ubuntu (или что-то еще). Через гипервизор, скажем, Xen, мы можем запускать 1+ виртуальных машин.

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

Итак, на каждой виртуальной машине мы имеем CoreOS. Выполнение на каждом экземпляре CoreOS является исполняемым/сервером Mesos. Все узлы Mesos в кластере видят все под ними в виде единого пула ресурсов, а артефакты могут быть произвольно развернуты в кластере Mesos, а Mesos определит, какой экземпляр CoreOS фактически будет использовать их.

Работа над Mesos - это "структура Mesos", такая как Marathon или Kubernetes. Внутри Кубернете находятся различные контейнеры Докера (C1 - C4).

enter image description here

Является ли это понимание Месоса более или менее правильным?

4b9b3361

Ответ 1

Ваше резюме почти правильно, но оно не отражает суть того, что представляет собой мезо. Видение мезосферы, компании, стоящей за проектом, заключается в создании "операционной системы Datacenter", а мезос - это ядро ​​по аналогии с ядром нормальной ОС. API не ограничивается Java, вы можете использовать C, С++, Java/Scala или Python. Если вы настроили свой кластер mesos, как вы описываете в своем вопросе и хотите использовать свои ресурсы, вы обычно делаете это через фреймворк вместо того, чтобы выполнять свою рабочую нагрузку непосредственно на нем. Это не означает, что это сложно вот очень маленький пример в Scala, который демонстрирует это. Существуют рамки для множества популярных распределенных систем обработки данных, таких как Apache Spark, Apache Cassandra. Существуют другие рамки, такие как Chronos cron на уровне центра обработки данных или Marathon, который позволяет вам для запуска приложений на основе Docker.

Update:

Да, mesos позаботится о размещении в кластере как о том, что делает ядро ​​- планирование и управление ограниченными ресурсами. Однако у вас есть набросок, который вызывает несколько очевидных вопросов.

Слои ниже мезо: Установка mesos на CoreOS возможна, но, насколько мне кажется, громоздка. Это не типичный сценарий для запуска мезо - обычно он перемещается на минимально возможный уровень (выше Ubuntu в вашем случае). Поэтому я надеюсь, что у вас есть веские причины для запуска CoreOS и гипервизора.

Слои выше мезо: Кубернеты доступны в качестве рамок, и мезосфера, похоже, прилагает к этому много усилий. Тем не менее, нет сомнений в том, что частичное перекрытие функциональности - особенно в отношении планирования. Если вы хотите запланировать основные рабочие нагрузки на основе контейнеров, вам может быть лучше с Marathon или в будущем возможно Aurora. Так и здесь я надеюсь, что у вас есть веские причины для этой самой договоренности. Sidenote: Кубернетес похож на марафон с более широким подходом и довольно упрямым.