我正在编写一个 mesos 框架,我想使用我的自定义执行器来执行我的任务。我浏览了其他几个 mesos 框架代码库(chronos 和 marathon),并编写了一个使用默认命令执行器执行 shell 命令的调度程序。现在我想用自定义的东西替换默认的执行器。问题是我不知道如何向奴隶注册执行者。关于构建框架的文档指出它应该是一个可执行文件,您可以使用 executorInfo 提供路径,但我不知道该怎么做。另外,拥有每个执行器都必须实现的 Executor 接口,同时在所有这些之上还需要一个可执行文件有什么意义?可执行文件的参数是什么?
问问题
2550 次
1 回答
4
当从属服务器中发生注册、重新注册和断开连接等事件时,或者当您的框架发出launchTask 或killTask 请求时,针对mesos 库的执行程序可执行链接和执行程序接口/回调是唯一通知您的方式。
它分为两部分(就像框架一样),由 ExecutorDriver 和您的 executor 实现组成。
如果您查看 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/主要去。
希望这会有所帮助,如果我需要扩展上述任何内容,请告诉我。
于 2013-12-18T15:47:45.107 回答