我正在编写一个mesos框架,我想使用自定义执行程序执行我的任务。我浏览了几个其他的mesos框架代码库(chronos和marathon)并编写了一个使用默认命令执行程序执行shell命令的调度程序。现在我想用自定义的东西替换默认的执行器。问题是我无法弄清楚如何向slave注册执行程序。有关构建框架的文档声明它应该是可执行文件,您可以使用executorInfo提供路径,但我不确切知道如何执行它。另外,拥有每个执行程序必须实现的Executor接口,同时还需要一个可执行文件的重点是什么?可执行文件的参数是什么?
答案 0 :(得分: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。
希望这有帮助,如果我需要扩展以上任何一项,请告诉我。