First, It matters in the case of concurrent jobs. If you submit a 20
minute job while a 20 hour job is running, it would be nice if the
reducers for the 20 minute job could get a chance to run before the 20
hour job's mappers have all finished. So even without a throughput
improvement, you have an important capability (although it may require
another minor tweak or two to make possible).

Secondarily, we often have stragglers, where one mapper runs slower
than the others. When this happens, we end up with a largely idle
cluster for as long as an hour. In cases like these, good support for
concurrent jobs _would_ improve throughput.

Paul

On 7/25/06, Doug Cutting <[EMAIL PROTECTED]> wrote:
Paul Sutter wrote:
> it should be possible to have lots of tasks in the shuffle phase
> (mostly, sitting around waiting for mappers to run), but only have
> "about" one actual reduce phase running per cpu (or whatever works for
> each of our apps) that gets enough memory for a sorter, does
> substantial computation, etc.

Ah, now I see your point, although I don't see how this would improve
overall throughput.  In most cases, the optimal configuration is for the
total number of reduce tasks to be roughly the total number of reduces
that can run at once.  So there is no queue of waiting reduce tasks to
schedule.

Doug


Reply via email to