Tamas Domok created YARN-11507:
----------------------------------
Summary: CSQueue properties are affected by
DominantResourceCalculator in a non-intuitive way
Key: YARN-11507
URL: https://issues.apache.org/jira/browse/YARN-11507
Project: Hadoop YARN
Issue Type: Bug
Components: capacityscheduler
Affects Versions: 3.4.0
Reporter: Tamas Domok
Assignee: Tamas Domok
The following queue hierarchy CapacityScheduler have different
capacity/absoluteCapacity for its queues, based on which resource calculator is
used (Default or Dominant).
{code}
conf.put("yarn.scheduler.capacity.resource-calculator",
"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator");
conf.put("yarn.scheduler.capacity.legacy-queue-mode.enabled", "true");
conf.put("yarn.scheduler.capacity.root.queues", "a, b");
conf.put("yarn.scheduler.capacity.root.a.capacity",
"[memory=4096,vcores=8]");
conf.put("yarn.scheduler.capacity.root.b.capacity",
"[memory=12288,vcores=8]");
conf.put("yarn.scheduler.capacity.root.b.queues", "b1, b2");
conf.put("yarn.scheduler.capacity.root.b.b1.capacity",
"[memory=3072,vcores=6]");
conf.put("yarn.scheduler.capacity.root.b.b2.capacity",
"[memory=9216,vcores=2]");
{code}
{code}
DefaultResourceCalculator
DominantResourceCalculator
capacity absoluteCapacity maxApps capacity
absoluteCapacity maxApps
root.a 0.25 0.25 2500 0.5 0.5
5000
root.b 0.75 0.75 0.75 0.75
root.b.b1 0.25 0.1875 1875 0.5 0.375
3750
root.b.b2 0.75 0.5625 5625 0.75 0.5625
5625
{code}
Issues: using DominantResourceCalculator, the capacity/absoluteCapacity for the
first (even second) level of queues is greater than 100%. There are properties
(like maxApplications) that are calculated from the absoluteCapacity (e.g.: the
sum of max apps is 10000 using the DefaultRC but 14375 using the DominantRC).
I don't see any reason why the ResourceCalculator abstraction should affect the
capacity/absoluteCapacity or any property of the queue queues in the hierarchy.
The cluster resource should be shared amongst the queues based their
configuration on the individual resource types. The effectiveMin/Max resource
should be a calculated for each queue for each resource type and that should be
the source of truth for the available resources for the queues, and later that
should be used for calculations. The absoluteCapacity should be calculated from
only one resource type (e.g.: memory) or it should be normalised someway.
The DominantResourceCalculator is useful when the whole cluster is utilised by
apps with multiple users (see this research:
https://cs.stanford.edu/~matei/papers/2011/nsdi_drf.pdf), but the queues are
not competing with each other with different dominant resources. The cluster
resource should be just shared based on the queue configurations.
Added a test case for reproduction to my
[fork|https://github.com/tomicooler/hadoop/commit/1d673350c18e97abea2703fa45dc6ff9f91aca8f].
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]