2013-12-16 45 views
5

我正在寫一個mesos框架,我想用我的自定義執行程序來執行我的任務。我經歷了幾個其他mesos框架代碼庫(chronos和marathon),並編寫了一個使用默認命令執行程序執行shell命令的調度程序。現在我想用自定義的東西替換默認的執行程序。問題是我無法弄清楚如何註冊執行者與奴隸。有關構建框架的文檔聲明它應該是一個可執行文件,並且您可以使用executorInfo提供路徑,但我不明白如何執行該操作。另外,每個執行者必須執行的Executor接口又有什麼意義?同時需要一個可執行文件?什麼是可執行文件的參數?如何在特定執行器上啓動一個mesos任務?

回答

4

對於mesos庫和執行程序接口/回調的執行程序可執行鏈接是在從屬程序中發生類似註冊,重新註冊和斷開連接的事件時通知您的唯一方式,或者您的框架發出launchTask或killTask​​請求時。

它被分成兩部分(就像框架一樣),由一個ExecutorDriver和執行器實現組成。

如果您看一下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

希望這可以幫助,讓我知道如果我需要擴大上述任何。

相關問題