5

mesos フレームワークを作成しており、カスタム executor を使用してタスクを実行したいと考えています。私は他のいくつかの mesos フレームワーク コードベース (クロノスとマラソン) を調べ、デフォルトのコマンド エグゼキューターを使用してシェル コマンドを実行するスケジューラーを作成しました。ここで、デフォルトのエグゼキューターをカスタムのものに置き換えたいと思います。問題は、エグゼキューターをスレーブに登録する方法がわからないことです。フレームワークの構築に関するドキュメントには、実行可能ファイルである必要があり、executorInfo を使用してパスを指定できると記載されていますが、その方法が正確にはわかりません。また、すべてのエグゼキュータが実装しなければならない Executor インターフェースを持ち、同時にその上に実行可能ファイルを必要とすることのポイントは何ですか? 実行可能ファイルへの引数は何ですか?

4

1 に答える 1

4

mesos ライブラリに対するエグゼキュータ実行可能リンクとエグゼキュータ インターフェイス / コールバックは、スレーブで登録、再登録、切断などのイベントが発生したとき、またはフレームワークによって launchTask または killTask​​ リクエストが発行されたときに通知を受ける唯一の方法です。

これは、ExecutorDriver とエグゼキュータの実装で構成される (フレームワークと同様に) 2 つの部分に接続されています。

mesos/executor.hpp を見ると、コンストラクターにはエグゼキューターへのポインターが必要であることがわかります。例えば

class MyExecutor : public Executor {
  /* Implement registered, reregistered, ... */
}

MesosExecutorDriver* driver = new MesosExecutorDriver(new MyExecutor());
driver->run();
// As long as the executor is running, the callbacks in MyExecutor will
// be invoked by the mesos slave when events and requests are received.

さまざまなコールバックが必要なプロトコル バッファ (mesos.proto で定義) を提供します。たとえば、launchTask の TaskInfo、killTask​​ の TaskID などです。

フレームワーク側に到達し、独自のエグゼキューターを登録したい場合は、https://github.com/mesosphere/mesos-go/blob/master/src/mesos.apache.org/example_framework/を参照してください。 main.go

これが役に立てば幸いです。上記のいずれかを拡張する必要がある場合はお知らせください。

于 2013-12-18T15:47:45.107 に答える