Thanks for your response!

Yes the executor (launchTask) only gets one task that it executes
synchronously and finishes. Since launchTask is a callback, my intuition
 is the scheduler should launch these tasks in parallel (even within a
single machine) after calculating the resources required. I can create a
new thread in launchTask() callback and return immediately but that will
cause a lost slave since the scheduler assumes it is finished but there is
a zombie thread still around. Hence, I am not completely sure creating new
threads will solve this issue.

I am using the C++ framework. Is there an example on how this is
accomplished in current frameworks?  I looked at Spark and it does not seem
to be doing anything special for its callbacks to ensure that multiple
tasks on a single machine execute in parallel.

Thanks,
Asim







On Mon, Jun 30, 2014 at 4:48 PM, Sharma Podila <[email protected]> wrote:

> A likely scenario is that your executor is running the task synchronously
> inside the callback to launchTask(). If you make it instead run the task
> asynchronously (e.g., in a separate thread), that should resolve it.
>
>
> On Mon, Jun 30, 2014 at 12:48 PM, Asim <[email protected]> wrote:
>
>> Hi,
>>
>> I want to launch multiple tasks on multiple machines (t >> m) that can
>> run simultaneously. Currently, I find that every machine processes the
>> tasks in a serial fashion one after another.
>>
>> I have written a framework with a scheduler and a executor. The scheduler
>> launches a task list on a bunch of machines (that show up as offers). When
>> I send a task list to run with driver->launchTasks(offers[i].id(),
>> tasks[i]) I find that every machine picks up one task at a time (and then
>> goes to the next). This happens even though the offer can accommodate more
>> than one task from this task list easily.
>>
>> Is there something that I am missing?
>>
>> Thanks,
>> Asim
>>
>>
>

Reply via email to