[
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.