0

私は何人かの同僚と Linux ボックスを共有しており、全員が mesos エコスフィアで開発を行っています。私が一般的にハッキングしているフレームワークをテストする最も便利な方法は、実行することですmesos-local.sh(マスターとスレーブの両方を 1 つに組み合わせます)。

私の同僚が同じことをしない限り、それはうまくいきます。それらの1つがそのショートカットを使用するとすぐに、マスター固有の一時ファイルが保存され/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/201402070505-156 -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.shmesos-local.shbin/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-tilt/0/meta' から状態を回復しています

mesos-master-flags.shそれに応じてパッチを適用したすべてのユーザーは、個人用の作業ディレクトリをセットアップし、お互いの足を踏む必要がなくなります。

また、どのファイルにもパッチを適用したくない場合は、環境変数を手動で設定して、その mesos インスタンスの起動を前に追加することもできます。

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