Запуск mesos-local для тестирования фреймворка завершается с ошибкой с отказом в доступе

Я делюсь Linux-боксом с некоторыми коллегами, все они работают в мезосфере. Самый удобный способ протестировать фреймворк, с которым я обычно работаю, — это запустить mesos-local.sh (сочетая в одном и главный, и подчиненный серверы).

Это прекрасно работает, пока никто из моих коллег не делает то же самое. Как только один из них воспользовался этим ярлыком, никто другой больше не может этого делать, поскольку временные файлы, специфичные для мастера, хранятся в /tmp/mesos, и пользователь, запустивший этот экземпляр mesos, будет владеть этими файлами и папками. Поэтому, когда другой пользователь пытается сделать то же самое, при попытке запустить любую задачу из фреймворка произойдет что-то вроде следующего:

F0207 05:06:02.574882 20038 paths.hpp:344] CHECK_SOME(mkdir): не удалось создать каталог исполнителя '/tmp/mesos/0/slaves/201402051726-3823062160-5050-31807-0/frameworks/2056-200208702505-301402052506-31807-0/frameworks/201402051726-3823062160-5050-31807-0/frameworks -20015-0000/executors/default/runs/d46e7a7d-29a2-4f66-83c9-b5863e018fee'Отказано в доступе

К сожалению, mesos-local.sh не предлагает флаг для переопределения этого пути, тогда как mesos-master.sh делает это через --work_dir=VALUE.

Следовательно, очевидный обходной путь — не использовать mesos-local.sh, а использовать master и slave как отдельные экземпляры. Хотя не слишком удобно...


person Till    schedule 07.02.2014    source источник


Ответы (1)


Самый простой обходной путь для предотвращения этой проблемы, независимо от того, используете ли вы mesos-master.sh или mesos-local.sh, — это исправить настройку среды в bin/mesos-master-flags.sh.

Этот файл используется как самим mesos-master, так и mesos-local, поэтому это идеальное место для переопределения рабочего каталога.

Отредактируйте bin/mesos-master-flags.sh и добавьте к нему следующее;

export MESOS_WORK_DIR=/tmp/mesos-"$USER"

Теперь запустите bin/mesos-local.sh, и вы должны увидеть что-то подобное в начале лога;

I0207 05:36:58.791069 20214 state.cpp:33] Восстановление состояния из «/tmp/mesos-till/0/meta»

Таким образом, все пользователи, которые соответствующим образом пропатчили свои mesos-master-flags.sh, будут иметь свою личную настройку рабочего каталога, и больше не будут наступать друг другу на ноги.

И если вы предпочитаете не исправлять какие-либо файлы, вы можете просто добавить запуск этого экземпляра mesos, установив переменную среды вручную:

MESOS_WORK_DIR=/tmp/mesos-foo bin/mesos-local.sh
person Till    schedule 07.02.2014
comment
./src/examples/python/test-framework 127.0.0.1:5050 все еще не работает с ошибкой разрешения после редактирования - person ealeon; 22.08.2016
comment
@ealeon, вы убедились, что проблема действительно соответствует приведенному выше описанию, прежде чем начать голосование против? - person Till; 27.08.2016
comment
мне пришлось удалить ведомый каталог. это ответ - person ealeon; 28.08.2016