(1) Is executor per-host instance or per-task instance? Typically you run one "mesos slave" process per host. A slave can have multiple executors running underneath it. Each executor can have multiple tasks underneath it. On the receipt of a task, a slave launches a new executor if no executor with TaskInfo.ExecutorInfo.executor_id is currently alive. If an executor with that id is alive, the task is just passed to the executor. On the other hand, if you are utilizing command executor for your task the slave will always launch a new executor per task.
(2) If executor is a per-host instance, I would imagine the executor > realize tasks as thread/process in launchTask(). How would the executor > track task status then? Since the main thread is doing driver.run(), does > it need to have another thread check task status and call > driver.sendStatusUpdate()? Is MesosExecutorDriver thread safe? > > As you can see from above, executor is not per-host. Having said that, yes, executor could realize running different tasks in different threads or child processes. The executor could get the exit status of the task from the child process exit status (for example see Command Executor) or using shared memory if you are using threads. And yes your main thread will be blocked on run(), so you need another thread to track tasks and status updates. Both the scheduler and executor drivers are thread safe. You would only get one callback at a time. > Thanks, > Li > > > On Wed, Aug 21, 2013 at 2:11 PM, Vinod Kone <[email protected]> wrote: > >> Hey Li, >> >> While your point about better documentation is duly noted, here are the >> answers to your specific questions. >> >> >>> (1) Under TaskInfo, it says "Either ExecutorInfo or CommandInfo should >>> be set", that's the difference? >>> >> >> The difference is as follows: >> >> If you set 'ExecutorInfo', the mesos slave launches your custom executor >> as described in the ExecutorInfo and passes it the task. How the executor >> runs the task is up to the Executor. >> >> Instead, if you set 'CommandInfo' on the TaskInfo, the mesos slave >> launches an in-built default executor (called 'Command Executor') and >> passes the shell command to it. You could use this executor if all you want >> do is run an arbitrary shell commands as your tasks. Note that the command >> executor exits as soon as the shell command exits. In other words each new >> task launches a new command executor. >> >> Command Executor is also a decent example of how to write an executor >> that runs an arbitrary command. See src/launcher/executor.cpp >> >> >>> (2) How should I pass task information (command, env, etc) to the >>> executor? Do I put these in the TaskInfo.ExecutorInfo? Or should I put >>> these in TaskInfo.ExecutorInfo.data? >>> >> >> Task specific information should be passed via TaskInfo.CommandInfo. >> Executor specific information should be passed via >> TaskInfo.ExecutorInfo.CommandInfo. The CommandInfo protobuf has fields for >> passing environment and command. >> >> TaskInfo.ExecutorInfo.data can be used to pass arbitrary blob of data to >> the executor. The ExecutorInfo will be passed to the executor through the >> registered() callback. >> >> >> (3) Is framwork/mesos-submit outdated? the api it uses is different from >>> any other examples >>> >>> >> I believe it is a bit out dated. But there has been some recent effort to >> resurrect it. Not sure about the current status. >> >> >> >>> Thanks, >>> Li >>> >>> >>> >>> On Wed, Aug 21, 2013 at 10:37 AM, 许立剑 <[email protected]> wrote: >>> >>>> See include/mesos/mesos.proto. >>>> >>>> 许立剑 >>>> >>>> 爱奇艺技术产品中心云平台 >>>> >>>> *[image: cid:[email protected]]* >>>> >>>> ☎ 15652344221 | QQ: 276583295 | 12F-W061 <http://www.iqiyi.com/> >>>> >>>> >>>> >>>> 2013/8/21 Li Jin <[email protected]> >>>> >>>>> Hello, >>>>> >>>>> I am implementing a basic mesos framework(Java) and executor(Python). >>>>> I find it quite difficult to find information about framework/executor >>>>> protocol. Here is all the information I found >>>>> >>>>> Doc: >>>>> >>>>> >>>>> https://github.com/apache/mesos/blob/master/docs/App-Framework-development-guide.textile >>>>> >>>>> This is nice but it doesn't explain things like how to construct >>>>> TaskInfo >>>>> >>>>> Examples: >>>>> >>>>> src/examples: >>>>> These examples are nice to get started, however, these examples don't >>>>> show some of the basic things I would like to know (they don't pass a >>>>> command to the executor, for instance) >>>>> >>>>> framework/mesos-submit: >>>>> Mesos-submit actually passed a command to the executor which is nice. >>>>> However the python api seems quite different from the java one and I find >>>>> it hard to understand what it's doing and even how to reimplement this in >>>>> Java >>>>> >>>>> In general, I couldn't find doc/example about all the protobuf >>>>> (TaskInfo, ExecutorInfo, etc) objects and how to use them. >>>>> >>>>> I am wondering if there are more for me to look at. If not, I guess my >>>>> best shot is take a look at the source code or Chronos >>>>> >>>>> Thanks, >>>>> Li >>>>> >>>> >>>> >>> >> >
<<DA9C7994-A0D6-4183-9C45-1ECA2C91A74F.png>>

