2013-12-16 4 views
5

Я пишу рамки mesos, и я хочу выполнить свои задачи, используя мой пользовательский исполнитель. Я прошел через пару других базовых кодовых фреймов mesos (chronos и marathon) и написал планировщик, который выполняет команды оболочки, используя исполняемый файл команды по умолчанию. Теперь я хочу заменить исполнятеля по умолчанию чем-то обычным. Проблема в том, что я не могу понять, как зарегистрировать исполнителя с ведомым. Документация по созданию фреймворка заявляет, что он должен быть исполняемым, и вы можете указать путь с помощью executorInfo, но я не вижу точно, как это сделать. Кроме того, какой смысл иметь интерфейс Executor, который должен выполнять каждый исполнитель, и в то же время требовать от исполняемого файла всего этого? Каковы аргументы для исполняемого файла?Как запустить задачу мезо на конкретном исполнителе?

ответ

4

Выполняемые исполнителем ссылки на библиотеку mesos, а интерфейсы/обратные вызовы исполнителя - это единственный способ для вас получать уведомления, когда события, такие как регистрация, перерегистрация и отключение происходят в подчиненном устройстве или когда запросы запускаTask или 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), например, TaskInfo в launchTask, TaskID в killTask ​​и т. Д.

Когда он попадает на сторону рамки и вы хотите зарегистрировать свой собственный исполнитель, попробуйте взглянуть на https://github.com/mesosphere/mesos-go/blob/master/src/mesos.apache.org/example_framework/main.go.

Надеюсь, что это поможет и сообщит мне, если мне нужно расширить любой из вышеперечисленных.

Смежные вопросы