[ 
https://issues.apache.org/jira/browse/HADOOP-5199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vivek Ratan updated HADOOP-5199:
--------------------------------

    Attachment: 5199.1.patch

I'm attaching a patch (5199.1.patch) that illustrates some of the proposals I 
made in the previous comment. In this patch: 
* {{HadoopTaskScheduler}} implements the Hadoop Scheduler. This class extends 
{{TaskScheduler}}. Anyone who wants to write their own scheduler can continue 
to extend {{TaskScheduler}}. 
* I have copied taken the {{Pool}} and {{PoolManager}} classes from FS, and 
copied them to src/mapred/o/a/h/mapred and renamed them to {{Pool2}} and 
{{Pool2Manager}}. (If this proposal works, FS's {{Pool}} and {{Pool2Manager}} 
classes will be deleted and {{Pool2}} and {{Pool2Manager}} will be renamed to 
their original names. {{Pool2}} represents a pool - a collection - of jobs, 
while {{Pool2Manager}} simply provides some methods to manage pools (and, 
perhaps, can be removed). 
* I needed to support the fact that we may have different ordering of jobs (as 
described in the earlier comment). To do this, I have made the {{Pool2}} class 
abstract. Developers are expected to extend this class to provide their own 
ordering of jobs in a pool. I can think of two sub-classes of {{Pool2}}: one 
which orders jobs based on priority and job submission time (which does what CS 
and DS want), and one which orders jobs based on fairshare criteria. I have 
implemented the former as the {{PriorityPool}} class, using the code from 
{{JobQueueJobScheduler}}. The benefit of this approach is that anyone can 
provide their own ordering of jobs and simply implement the ordering code. 
Everything else is handled by the {{Pool2}} base class. When {{Pool2Manager}} 
creates {{Pool2}} objects, it actually creates {{PriorityPool}} classes (or any 
other sub-class of {{Pool2}}) as configured. 
* When {{HadoopTaskScheduler}} starts up, it reads pool information from a pool 
configuration file using the {{PoolConf}} class. This class expects 
configuration to be in the same Hadoop format as other config files, rather 
than in XML format as used by FS. Each pool is configured with a capacity 
(which I refer to as 'guaranteed capacity' in the code). This should probably 
be a percentage value and we should do the same sanity checks as we did in CS. 
Pools will also be configured with user limits, which I haven't implemented 
yet. 
* I have not implemented user limits yet. We can presumably have user limits 
based on tasks (each user can have no more than X% of the pool's capacity in 
terms of running tasks, as CS does), or based on jobs (each user can have no 
more than X% or Y jobs running at any given time) similar to what FS does. 
* I have not implemented memory-based scheduling, but it has been implemented 
in CS, and can be copied over with minimal fuss, I suspect. 

I'd love to get feedback and thoughts from folks. This patch still needs work 
and is meant to illustrate some of the proposals I had made earlier. 



> A proposal to merge common functionality of various Schedulers
> --------------------------------------------------------------
>
>                 Key: HADOOP-5199
>                 URL: https://issues.apache.org/jira/browse/HADOOP-5199
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: mapred
>            Reporter: Vivek Ratan
>         Attachments: 5199.1.patch
>
>
> There are at least 3 Schedulers in Hadoop today: Default, Capacity, and 
> Fairshare. Over time, we're seeing a lot of functionality common to all 
> three. Many bug fixes, improvements to existing functionality, and new 
> functionality are applicable to all three schedulers. This trend seems to be 
> getting stronger, as we notice similar problems, solutions, and ideas. This 
> is a proposal to detect and consolidate such common functionality, while at 
> the same time, allowing for differences in behavior and leaving the door open 
> for other schedulers to be built, as per HADOOP-3412. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to