|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.hadoop.yarn.util.resource.ResourceCalculator
org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
@InterfaceAudience.Private @InterfaceStability.Unstable public class DominantResourceCalculator
A ResourceCalculator which uses the concept of
dominant resource to compare multi-dimensional resources.
Essentially the idea is that the in a multi-resource environment,
the resource allocation should be determined by the dominant share
of an entity (user or queue), which is the maximum share that the
entity has been allocated of any resource.
In a nutshell, it seeks to maximize the minimum dominant share across
all entities.
For example, if user A runs CPU-heavy tasks and user B runs
memory-heavy tasks, it attempts to equalize CPU share of user A
with Memory-share of user B.
In the single resource case, it reduces to max-min fairness for that resource.
See the Dominant Resource Fairness paper for more details:
www.cs.berkeley.edu/~matei/papers/2011/nsdi_drf.pdf
| Constructor Summary | |
|---|---|
DominantResourceCalculator()
|
|
| Method Summary | |
|---|---|
int |
compare(org.apache.hadoop.yarn.api.records.Resource clusterResource,
org.apache.hadoop.yarn.api.records.Resource lhs,
org.apache.hadoop.yarn.api.records.Resource rhs)
|
int |
computeAvailableContainers(org.apache.hadoop.yarn.api.records.Resource available,
org.apache.hadoop.yarn.api.records.Resource required)
Compute the number of containers which can be allocated given available and required resources. |
float |
divide(org.apache.hadoop.yarn.api.records.Resource clusterResource,
org.apache.hadoop.yarn.api.records.Resource numerator,
org.apache.hadoop.yarn.api.records.Resource denominator)
Divide resource numerator by resource denominator
using specified policy (domination, average, fairness etc.); hence overall
clusterResource is provided for context. |
org.apache.hadoop.yarn.api.records.Resource |
divideAndCeil(org.apache.hadoop.yarn.api.records.Resource numerator,
int denominator)
Divide-and-ceil numerator by denominator. |
protected float |
getResourceAsValue(org.apache.hadoop.yarn.api.records.Resource clusterResource,
org.apache.hadoop.yarn.api.records.Resource resource,
boolean dominant)
Use 'dominant' for now since we only have 2 resources - gives us a slight performance boost. |
boolean |
isInvalidDivisor(org.apache.hadoop.yarn.api.records.Resource r)
Determine if a resource is not suitable for use as a divisor (will result in divide by 0, etc) |
org.apache.hadoop.yarn.api.records.Resource |
multiplyAndNormalizeDown(org.apache.hadoop.yarn.api.records.Resource r,
double by,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
Multiply resource r by factor by
and normalize down using step-factor stepFactor. |
org.apache.hadoop.yarn.api.records.Resource |
multiplyAndNormalizeUp(org.apache.hadoop.yarn.api.records.Resource r,
double by,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
Multiply resource r by factor by
and normalize up using step-factor stepFactor. |
org.apache.hadoop.yarn.api.records.Resource |
normalize(org.apache.hadoop.yarn.api.records.Resource r,
org.apache.hadoop.yarn.api.records.Resource minimumResource,
org.apache.hadoop.yarn.api.records.Resource maximumResource,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
Normalize resource r given the base
minimumResource and verify against max allowed
maximumResource using a step factor for hte normalization. |
float |
ratio(org.apache.hadoop.yarn.api.records.Resource a,
org.apache.hadoop.yarn.api.records.Resource b)
Ratio of resource a to resource b. |
org.apache.hadoop.yarn.api.records.Resource |
roundDown(org.apache.hadoop.yarn.api.records.Resource r,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
Round-down resource r given factor stepFactor. |
org.apache.hadoop.yarn.api.records.Resource |
roundUp(org.apache.hadoop.yarn.api.records.Resource r,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
Round-up resource r given factor stepFactor. |
| Methods inherited from class org.apache.hadoop.yarn.util.resource.ResourceCalculator |
|---|
divideAndCeil, normalize, roundDown, roundUp |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DominantResourceCalculator()
| Method Detail |
|---|
public int compare(org.apache.hadoop.yarn.api.records.Resource clusterResource,
org.apache.hadoop.yarn.api.records.Resource lhs,
org.apache.hadoop.yarn.api.records.Resource rhs)
compare in class ResourceCalculator
protected float getResourceAsValue(org.apache.hadoop.yarn.api.records.Resource clusterResource,
org.apache.hadoop.yarn.api.records.Resource resource,
boolean dominant)
public int computeAvailableContainers(org.apache.hadoop.yarn.api.records.Resource available,
org.apache.hadoop.yarn.api.records.Resource required)
ResourceCalculatoravailable and required resources.
computeAvailableContainers in class ResourceCalculatoravailable - available resourcesrequired - required resources
public float divide(org.apache.hadoop.yarn.api.records.Resource clusterResource,
org.apache.hadoop.yarn.api.records.Resource numerator,
org.apache.hadoop.yarn.api.records.Resource denominator)
ResourceCalculatornumerator by resource denominator
using specified policy (domination, average, fairness etc.); hence overall
clusterResource is provided for context.
divide in class ResourceCalculatorclusterResource - cluster resourcesnumerator - numeratordenominator - denominator
numerator/denominator
using specific policypublic boolean isInvalidDivisor(org.apache.hadoop.yarn.api.records.Resource r)
ResourceCalculator
isInvalidDivisor in class ResourceCalculatorr - resource
public float ratio(org.apache.hadoop.yarn.api.records.Resource a,
org.apache.hadoop.yarn.api.records.Resource b)
ResourceCalculatora to resource b.
ratio in class ResourceCalculatora - resourceb - resource
a to resource b
public org.apache.hadoop.yarn.api.records.Resource divideAndCeil(org.apache.hadoop.yarn.api.records.Resource numerator,
int denominator)
ResourceCalculatornumerator by denominator.
divideAndCeil in class ResourceCalculatornumerator - numerator resourcedenominator - denominator
public org.apache.hadoop.yarn.api.records.Resource normalize(org.apache.hadoop.yarn.api.records.Resource r,
org.apache.hadoop.yarn.api.records.Resource minimumResource,
org.apache.hadoop.yarn.api.records.Resource maximumResource,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
ResourceCalculatorr given the base
minimumResource and verify against max allowed
maximumResource using a step factor for hte normalization.
normalize in class ResourceCalculatorr - resourceminimumResource - minimum valuemaximumResource - the upper bound of the resource to be allocatedstepFactor - the increment for resources to be allocated
public org.apache.hadoop.yarn.api.records.Resource roundUp(org.apache.hadoop.yarn.api.records.Resource r,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
ResourceCalculatorr given factor stepFactor.
roundUp in class ResourceCalculatorr - resourcestepFactor - step-factor
public org.apache.hadoop.yarn.api.records.Resource roundDown(org.apache.hadoop.yarn.api.records.Resource r,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
ResourceCalculatorr given factor stepFactor.
roundDown in class ResourceCalculatorr - resourcestepFactor - step-factor
public org.apache.hadoop.yarn.api.records.Resource multiplyAndNormalizeUp(org.apache.hadoop.yarn.api.records.Resource r,
double by,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
ResourceCalculatorr by factor by
and normalize up using step-factor stepFactor.
multiplyAndNormalizeUp in class ResourceCalculatorr - resource to be multipliedby - multiplierstepFactor - factor by which to normalize up
public org.apache.hadoop.yarn.api.records.Resource multiplyAndNormalizeDown(org.apache.hadoop.yarn.api.records.Resource r,
double by,
org.apache.hadoop.yarn.api.records.Resource stepFactor)
ResourceCalculatorr by factor by
and normalize down using step-factor stepFactor.
multiplyAndNormalizeDown in class ResourceCalculatorr - resource to be multipliedby - multiplierstepFactor - factor by which to normalize down
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||