2013-12-16 4 views
5

私はmesosフレームワークを作成しています。私は自分のカスタムエグゼキュータを使ってタスクを実行したいと思います。私は他のいくつかのmesosフレームワークのコードベース(chronosとmarathon)を見て、デフォルトコマンドエグゼキュータを使ってシェルコマンドを実行するスケジューラーを書きました。今私はデフォルトのエグゼキュータをカスタムに置き換えたいと思っています。問題は、エグゼキュータをスレーブに登録する方法を理解できないことです。フレームワークを構築するためのドキュメントでは、実行可能ファイルでなければならず、executorInfoを使用してパスを提供することができますが、実行方法は正確にはわかりません。また、すべてのエグゼキュータが実装しなければならないエグゼキュータインタフェースを持つと同時に、すべての実行可能プログラムの上に実行可能ファイルが必要ですか?実行可能ファイルへの引数は何ですか?特定のエグゼキュータでmesosタスクを起動するにはどうすればよいですか?

答えて

4

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

これは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を参照してください。

私が上記のいずれかを展開する必要がある場合は、これが役立ちます。

関連する問題