[ https://issues.apache.org/jira/browse/MAPREDUCE-860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12743121#action_12743121 ]
Hemanth Yamijala commented on MAPREDUCE-860: -------------------------------------------- One proposal is to use a 'fully qualified queue name', which is a separated list of queue names that uniquely defines a queue in the hierarchy. Let's say the separator character is '-' (subject to discussion). So, this is an example of a fully qualified queue name - "org1-priority-production". If a fully qualified name is not specified, this will map to a top level queue. This definition is backwards compatible for existing sites, because top level queues and leaf level queues are the same in this case. With this in mind, the APIs can be redefined as follows: - getJobsFromQueue returns jobs from the named queue. New sites that use hierarchical queues must pass the fully qualified queue name of the job queue. In case a container queue name is passed to the API, we could throw an IOException with an explanatory message. The other option is to return null, but then it would be difficult to know whether it is because there are no jobs in the queue, or due to an error condition. - getQueueInfo works as before. - For getQueues we have two choices. We can: -- return only information about leaf level queues, or job queues. -- return information about all queues. Either approach could be considered backwards compatible as for sites with leaf level queues, both approaches will return the same list of queues. The JobQueueInfo should have the queueName as the fully qualified name of the queue. We would also need new APIs to navigate the queue hierarchy. There are a couple of options to do this. - One is to maintain the hierarchy using JobQueueInfo objects. i.e. a JobQueueInfo object will contain the JobQueueInfo objects for its children. The advantage is that with a single call we can get the entire hierarchy and this will allow efficient navigation and fewer lookups when we want to get the entire tree. The disadvantage is the amount of data transferred if we are interested only in part of the hierarchy. This change though would mean the JobQueueInfo class itself is not backwards compatible and though behavior can be maintained, client code will need to use the new JobClient code. - The other would be to provide APIs such as the following: {code} // return information about queues that form the roots of the hierarchy JobQueueInfo[] getRootQueues(); // return information about queues that are under a given queue JobQueueInfo[] getChildQueues(String queueName); {code} This would allow traversal of the entire tree and also of portions of the hierarchy. However, if the interest is in all the queues, it is a lot of RPC calls, and lookups on the server. - We could do both - i.e. have an API such as JobQueueInfo[] getAllQueues() that returns the entire tree, and the more specific calls to navigate just parts of the hierarchy. Thoughts ? > Modify Queue APIs to support a hierarchy of queues > -------------------------------------------------- > > Key: MAPREDUCE-860 > URL: https://issues.apache.org/jira/browse/MAPREDUCE-860 > Project: Hadoop Map/Reduce > Issue Type: Sub-task > Components: jobtracker > Reporter: Hemanth Yamijala > Assignee: rahul k singh > > MAPREDUCE-853 proposes to introduce a hierarchy of queues into the Map/Reduce > framework. This JIRA is for defining changes to the APIs related to queues. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.