When you launch a task on a slave, you are required to specify an executor_id in the TaskInfo (or a CommandInfo, which just delegates to the default "command" executor.) If that executor already exists, the task will be launched there (possibly with other outstanding tasks.) If the executor doesn't exist, it will be created in order to launch the task. This means a single slave can have multiple executors for a particular framework, so long as they have different executor_ids. At Twitter, we used to have one executor per slave, and many tasks per executor. We recently switched to having a 1:1 correspondence between executors and tasks, but now run multiple executors per slave.
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! >
