2013-12-16 47 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

希望这可以帮助,让我知道如果我需要扩大上述任何。

相关问题