私はLinuxボックスを何人かの同僚と共有しています。彼らはすべてメソスエコスフィアで開発しています。私がよくハッキングしているフレームワークをテストする最も便利な方法は、実行することですmesos-local.sh
(マスターとスレーブの両方を1つに組み合わせます)。
私の同僚の誰もが同じことをしない限り、それはうまくいきます。それらの1つがそのショートカットを使用するとすぐに、マスター固有の一時ファイルが格納され/tmp/mesos
、そのmesosのインスタンスを実行したユーザーがそれらのファイルとフォルダーの所有権を持つため、他のユーザーはそれを実行できなくなります。したがって、別のユーザーが同じことを行おうとすると、フレームワークからタスクを実行しようとすると、次のようなことが起こります。
F0207 05:06:02.574882 20038 path.hpp:344] CHECK_SOME(mkdir):エグゼキュータディレクトリの作成に失敗しました '/ tmp / mesos / 0 / slaves / 201402051726-3823062160-5050-31807-0 / frameworks / 201402070505-3823062160-5050 -20015-0000 / executers / default / runs / d46e7a7d-29a2-4f66-83c9-b5863e018fee '許可が拒否されました
残念ながら、を介しmesos-local.sh
て提供するのに対し、そのパスをオーバーライドするためのフラグは提供しません。mesos-master.sh
--work_dir=VALUE
したがって、明らかな回避策はmesos-local.sh
、マスターとスレーブを別々のインスタンスとして使用するのではなく、使用することです。あまり便利ではありませんが...
を実行するmesos-master.sh
かmesos-local.sh
、内の環境設定にパッチを適用するかに関係なく、この問題を防ぐための最も簡単な回避策bin/mesos-master-flags.sh
。
このファイルは、mesos-master自体とmesos-localの両方で使用されるため、work-directoryをオーバーライドするのに最適な場所です。
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加