2013-12-16 8 views
5

Sto scrivendo un framework mesos e voglio eseguire i miei compiti usando il mio esecutore personalizzato. Ho esaminato un paio di altre basi di codici del framework mesos (chronos e marathon) e ho scritto uno scheduler che esegue i comandi della shell usando il comando di esecuzione predefinito. Ora voglio sostituire l'esecutore predefinito con qualcosa di personalizzato. Il problema è che non riesco a capire come registrare un esecutore con lo schiavo. La documentazione sulla costruzione di un framework afferma che dovrebbe essere un eseguibile e puoi fornire il percorso usando executorInfo ma non vedo esattamente come farlo. Inoltre, che senso ha avere l'interfaccia Executor che ogni esecutore deve implementare e allo stesso tempo richiedere un eseguibile oltre a tutto ciò? Quali sono gli argomenti dell'eseguibile?Come avviare un'attività mesos su un particolare esecutore?

risposta

4

I collegamenti eseguibili dell'esecutore contro la libreria mesos e le interfacce/callback executor sono l'unico modo per ricevere notifiche quando eventi come registrazione, registrazione e disconnessione avvengono nello slave o quando le richieste launchTask o killTask ​​vengono emesse dal framework .

È cablato in due parti (proprio come i framework), costituito da un ExecutorDriver e dall'implementazione dell'esecutore.

Se si dà un'occhiata a mesos/executor.hpp, si noterà che il costruttore richiede un puntatore a un executor. Ad esempio

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. 

I diversi callback vi offre i buffer di protocollo necessarie (definito in mesos.proto) esempio Un TaskInfo in launchTask, TaskID in killTask ​​e così via.

Quando si arriva al lato quadro e si desidera registrare il proprio esecutore, provare a dare un'occhiata a https://github.com/mesosphere/mesos-go/blob/master/src/mesos.apache.org/example_framework/main.go.

Spero che questo aiuti e fammi sapere se ho bisogno di espandere su uno dei precedenti.

Problemi correlati