运行mesos-local以测试框架失败,Permission denied

时间:2014-02-07 05:42:57

标签: linux mesos

我和一些同事共享一个linux盒子,所有这些都是在mesos生态圈中开发的。测试我常常遇到的框架的最方便的方法是运行mesos-local.sh(将master和slave组合在一起)。

只要我的同事都不这样做,那就很有效。只要其中一个人使用了该快捷方式,就没有其他人能够这样做,因为主特定临时文件存储在/tmp/mesos中,运行该mesos实例的用户将拥有这些文件和文件夹的所有权。因此,当另一个用户尝试执行相同的操作时,尝试从框架运行任何任务时会发生以下情况;

  

F0207 05:06:02.574882 20038 paths.hpp:344] CHECK_SOME(mkdir):失败   创建执行程序目录   “/ TMP / mesos / 0 /从站/ 201402051726-3823062160-5050-31807-0 /框架/ 201402070505-3823062160-5050-20015-0000 /执行人/默认/运行/ d46e7a7d-29a2-4f66-83c9-b5863e018fee'Permission   拒绝

不幸的是,mesos-local.sh没有提供覆盖该路径的标志,而mesos-master.sh则通过--work_dir=VALUE提供。

因此,显而易见的解决方法是不使用mesos-local.sh,而将主服务器和从服务器用作单独的实例。虽然不太方便......

1 个答案:

答案 0 :(得分: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 /元'

因此,所有修改了mesos-master-flags.sh {{}}}的用户都将拥有他们的个人工作目录设置,而且没有其他人踩到彼此的脚步。

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

MESOS_WORK_DIR=/tmp/mesos-foo bin/mesos-local.sh