Docker на Mesos: на каком узле размещается том?

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

Теперь, когда я отправляю задание Docker в кластер, указав объем, например, в файле задания JSON для Marathon или Chronos, куда попадает результат моих вычислений?

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

Каким было бы элегантное решение для этого сценария? Я новичок в управлении кластерами, поэтому единственным хорошим решением, которое я мог придумать, была распределенная файловая система, хотя я не знаю, будет ли это поддерживаться в файле заданий Marathon или Chronos.


person SGer    schedule 10.05.2015    source источник


Ответы (3)


Можно с уверенностью сказать, что Mesos предполагает, что все ваши окончательные данные сохраняются где-то, когда ваша задача завершается, и вы, или, если хотите, ваша задача или ваша структура несет ответственность за обеспечение этого. Если вы хотите сохранить промежуточные результаты или поделиться результатами между задачами, вы можете просмотреть постоянные тома, которые в настоящее время находятся в стадии разработки и, надеюсь, появятся в следующем выпуске Mesos. Имейте в виду, что они считаются частью ресурсов узла и не реплицируются, поэтому будут потеряны в случае сбоя узла.

В качестве альтернативы распределенной файловой системе вы можете изменить свою задачу так, чтобы она отправляла результат вычислений в определенное хранилище, например. база данных, ftp-сервер и т. д.

person rukletsov    schedule 11.05.2015

Другие ответы от rukletsov и js84 являются хорошими вариантами, но я хотел бы указать на простую альтернативу. При использовании контейнеризатора Docker от Mesos песочница задач монтируется как том в $MESOS_SANDBOX, по умолчанию /mnt/mesos/sandbox/ внутри контейнера, поэтому вы можете хранить там свои результаты или просто писать в stdout/stderr, который также перенаправляется туда. Нет необходимости создавать собственный том.

Затем вы можете использовать mesos-cli для mesos tail --follow task-id file или mesos cat task-id file [file]

person Adam    schedule 11.05.2015

в настоящее время ведется работа по улучшению поддержки распределенных файловых систем в mesos. На данный момент одним из возможных решений может быть использование hdfs и запись туда вашего вывода.

Надеюсь это поможет!

person js84    schedule 11.05.2015