Hi David, The model of executors/tasks hasn't changed since we released 0.9.0. That said, this is how things work.
--> Framework registers with the master. --> Master offers various slaves' resources to the framework. --> Framework launches a task using the resources of an offer (an offer maps uniquely to a slave). --> When the slaves gets the task, it checks if the executor (see TaskInfo) for that task is already running. --> If yes, the task is sent to the executor and the executor driver calls launchTask(). --> If no, the slave launches the executor and then sends the task to the executor. --> You can launch multiple executors per slave as long as they have different ExecutorIDs. --> How the tasks and executors interact is up to the executor (framework) writers. --> From Mesos point of view a task is something that consumes some resources. --> If you are using cgroups isolation on the slave, Mesos ensures that the cgroup container running executor+tasks is properly sized (cpu, memory etc). --> Another thing to note is that sending terminal status update (e.g., TASK_FINISHED) for a finished task is crucial, for Mesos to properly reoffer those resources to the framework and resize the container (if using cgroups). --> Finally, for framework writers that don't want to write a specialized executor, Mesos has a default executor called Command Executor. All it does is wrap your command line in a shell script and run it. --> Note that, a command executor can only run 1 task. It exits right after the shell command returns. We are in the process of revamping the documentation. So hopefully these things will be more clear soon. HTH, @vinodkone On Tue, Apr 9, 2013 at 3:05 PM, David Greenberg <[email protected]> wrote: > I do not understand how tasks and executors work in the new mesos API. I > assume that the model is still that a framework gets 1 scheduler, and then > that scheduler starts some number of executors. How do the executors and > tasks interact, given that the scheduler only launches tasks? Are the > executors implicitly created when needed, one per slave? > > Thanks!
