0

我正在与一些同事共享一个 linux 盒子,他们都在 mesos 生态圈中开发。测试我经常使用的框架的最方便的方法是运行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/20140207050505-508 -20015-0000/executors/default/runs/d46e7a7d-29a2-4f66-83c9-b5863e018fee'权限被拒绝

不幸的是,mesos-local.sh它不提供覆盖该路径的标志,而mesos-master.shvia 提供--work_dir=VALUE

因此,明显的解决方法是不使用mesos-local.sh主和从作为单独的实例。虽然不太方便...

4

1 回答 1

0

防止该问题的最简单解决方法,无论您是运行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-tillt/0/meta”恢复状态

这样,所有对其进行了相应修补的用户都mesos-master-flags.sh将拥有他们的个人工作目录设置,并且不再相互踩踏。

如果您不想修补任何文件,您也可以通过手动设置环境变量来简单地预先启动该 mesos 实例:

MESOS_WORK_DIR=/tmp/mesos-foo bin/mesos-local.sh
于 2014-02-07T05:42:56.863 回答