2013-12-16 5 views
5

Ich schreibe ein Mesos-Framework und möchte meine Aufgaben mit meinem benutzerdefinierten Executor ausführen. Ich ging durch ein paar andere mesos Framework-Codebasen (chronos und marathon) und schrieb einen Scheduler, der Shell-Befehle mit dem Standard-Befehls-Executor ausführt. Jetzt möchte ich den Standard-Executor durch etwas Brauchbares ersetzen. Das Problem ist, ich kann nicht herausfinden, wie man einen Executor mit dem Slave registriert. Die Dokumentation zum Erstellen eines Frameworks besagt, dass es eine ausführbare Datei sein sollte, und Sie können den Pfad mithilfe von executorInfo angeben, aber ich sehe nicht genau, wie es geht. Außerdem, was ist der Sinn der Executor-Schnittstelle, die jeder Executor implementieren muss und gleichzeitig eine ausführbare Datei benötigt? Was sind die Argumente für die ausführbare Datei?Wie startet man eine Mesos-Task auf einem bestimmten Executor?

Antwort

4

Die ausführbaren Executor-Links mit der mesos-Bibliothek und den Executor-Schnittstellen/-Rückrufen sind die einzige Möglichkeit, wenn Ereignisse wie Registrierung, erneute Registrierung und Trennung im Slave auftreten oder wenn launchTask- oder killTask-Anfragen von Ihrem Framework ausgegeben werden .

Es ist in zwei Teile verdrahtet (genau wie Frameworks sind), bestehend aus einem ExecutorDriver und Ihre Executor-Implementierung.

Wenn Sie sich mesos/executor.hpp ansehen, werden Sie feststellen, dass der Konstruktor einen Zeiger auf einen Executor benötigt. Zum Beispiel

Die verschiedenen Rückrufe bieten Ihnen die notwendigen Protokollpuffer (definiert in mesos.proto), z. Eine TaskInfo in LaunchTask, eine TaskID in KillTask ​​und so weiter.

Wenn es zur Framework-Seite kommt und Sie Ihren eigenen Executor registrieren möchten, versuchen Sie es mit https://github.com/mesosphere/mesos-go/blob/master/src/mesos.apache.org/example_framework/main.go.

Hoffe, dass dies hilft und lassen Sie mich wissen, wenn ich auf eine der oben genannten erweitern muss.

Verwandte Themen