Class DefaultResourceCalculator
java.lang.Object
org.apache.hadoop.yarn.util.resource.ResourceCalculator
org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintcompare(org.apache.hadoop.yarn.api.records.Resource unused, org.apache.hadoop.yarn.api.records.Resource lhs, org.apache.hadoop.yarn.api.records.Resource rhs, boolean singleType) On a cluster with capacityclusterResource, comparelhsandrhs.longcomputeAvailableContainers(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 givenavailableandrequiredresources.floatdivide(org.apache.hadoop.yarn.api.records.Resource unused, org.apache.hadoop.yarn.api.records.Resource numerator, org.apache.hadoop.yarn.api.records.Resource denominator) Divide resourcenumeratorby resourcedenominatorusing specified policy (domination, average, fairness etc.); hence overallclusterResourceis provided for context.org.apache.hadoop.yarn.api.records.ResourcedivideAndCeil(org.apache.hadoop.yarn.api.records.Resource numerator, float denominator) Divide-and-ceilnumeratorbydenominator.org.apache.hadoop.yarn.api.records.ResourcedivideAndCeil(org.apache.hadoop.yarn.api.records.Resource numerator, int denominator) Divide-and-ceilnumeratorbydenominator.booleanfitsIn(org.apache.hadoop.yarn.api.records.Resource smaller, org.apache.hadoop.yarn.api.records.Resource bigger) Check if a smaller resource can be contained by bigger resource.getInsufficientResourceNames(org.apache.hadoop.yarn.api.records.Resource required, org.apache.hadoop.yarn.api.records.Resource available) Get insufficient resource names via comparing required resource and capacity resource.booleanisAllInvalidDivisor(org.apache.hadoop.yarn.api.records.Resource r) Determine if all resources are zero.booleanisAnyMajorResourceAboveZero(org.apache.hadoop.yarn.api.records.Resource resource) Check if resource has any major resource types (which are all NodeManagers included) has a > 0 value.booleanisAnyMajorResourceZeroOrNegative(org.apache.hadoop.yarn.api.records.Resource resource) Check if resource has any major resource types (which are all NodeManagers included) a zero value or negative value.booleanisInvalidDivisor(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.ResourcemultiplyAndNormalizeDown(org.apache.hadoop.yarn.api.records.Resource r, double by, org.apache.hadoop.yarn.api.records.Resource stepFactor) Multiply resourcerby factorbyand normalize down using step-factorstepFactor.org.apache.hadoop.yarn.api.records.ResourcemultiplyAndNormalizeUp(org.apache.hadoop.yarn.api.records.Resource r, double[] by, org.apache.hadoop.yarn.api.records.Resource stepFactor) Multiply resourcerby factorbyand normalize up using step-factorstepFactor.org.apache.hadoop.yarn.api.records.ResourcemultiplyAndNormalizeUp(org.apache.hadoop.yarn.api.records.Resource r, double by, org.apache.hadoop.yarn.api.records.Resource stepFactor) Multiply resourcerby factorbyand normalize up using step-factorstepFactor.org.apache.hadoop.yarn.api.records.Resourcenormalize(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 resourcergiven the baseminimumResourceand verify against max allowedmaximumResourceusing a step factor for the normalization.org.apache.hadoop.yarn.api.records.ResourcenormalizeDown(org.apache.hadoop.yarn.api.records.Resource r, org.apache.hadoop.yarn.api.records.Resource stepFactor) Get resourcerand normalize down using step-factorstepFactor.floatratio(org.apache.hadoop.yarn.api.records.Resource a, org.apache.hadoop.yarn.api.records.Resource b) Ratio of resourceato resourceb.org.apache.hadoop.yarn.api.records.ResourceroundDown(org.apache.hadoop.yarn.api.records.Resource r, org.apache.hadoop.yarn.api.records.Resource stepFactor) Round-down resourcergiven factorstepFactor.org.apache.hadoop.yarn.api.records.ResourceroundUp(org.apache.hadoop.yarn.api.records.Resource r, org.apache.hadoop.yarn.api.records.Resource stepFactor) Round-up resourcergiven factorstepFactor.Methods inherited from class org.apache.hadoop.yarn.util.resource.ResourceCalculator
compare, divideAndCeil, divideAndCeil, divideAndCeil, divideAndCeil, divideSafelyAsFloat, roundDown, roundDown, roundUp, roundUp
-
Constructor Details
-
DefaultResourceCalculator
public DefaultResourceCalculator()
-
-
Method Details
-
compare
public int compare(org.apache.hadoop.yarn.api.records.Resource unused, org.apache.hadoop.yarn.api.records.Resource lhs, org.apache.hadoop.yarn.api.records.Resource rhs, boolean singleType) Description copied from class:ResourceCalculatorOn a cluster with capacityclusterResource, comparelhsandrhs. Consider all resources unlesssingleTypeis set to true. WhensingleTypeis set to true, consider only one resource as per theResourceCalculatorimplementation; theDefaultResourceCalculatorconsiders memory andDominantResourceCalculatorconsiders the dominant resource.- Specified by:
comparein classResourceCalculator- Parameters:
unused- cluster capacitylhs- FirstResourceto comparerhs- SecondResourceto comparesingleType- Whether to consider a single resource type or all resource types- Returns:
- -1 if
lhsis smaller, 0 if equal and 1 if it is larger
-
computeAvailableContainers
public long computeAvailableContainers(org.apache.hadoop.yarn.api.records.Resource available, org.apache.hadoop.yarn.api.records.Resource required) Description copied from class:ResourceCalculatorCompute the number of containers which can be allocated givenavailableandrequiredresources.- Specified by:
computeAvailableContainersin classResourceCalculator- Parameters:
available- available resourcesrequired- required resources- Returns:
- number of containers which can be allocated
-
divide
public float divide(org.apache.hadoop.yarn.api.records.Resource unused, org.apache.hadoop.yarn.api.records.Resource numerator, org.apache.hadoop.yarn.api.records.Resource denominator) Description copied from class:ResourceCalculatorDivide resourcenumeratorby resourcedenominatorusing specified policy (domination, average, fairness etc.); hence overallclusterResourceis provided for context.- Specified by:
dividein classResourceCalculator- Parameters:
unused- cluster resourcesnumerator- numeratordenominator- denominator- Returns:
numerator/denominatorusing specific policy
-
isInvalidDivisor
public boolean isInvalidDivisor(org.apache.hadoop.yarn.api.records.Resource r) Description copied from class:ResourceCalculatorDetermine if a resource is not suitable for use as a divisor (will result in divide by 0, etc)- Specified by:
isInvalidDivisorin classResourceCalculator- Parameters:
r- resource- Returns:
- true if divisor is invalid (should not be used), false else
-
ratio
public float ratio(org.apache.hadoop.yarn.api.records.Resource a, org.apache.hadoop.yarn.api.records.Resource b) Description copied from class:ResourceCalculatorRatio of resourceato resourceb.- Specified by:
ratioin classResourceCalculator- Parameters:
a- resourceb- resource- Returns:
- ratio of resource
ato resourceb
-
divideAndCeil
public org.apache.hadoop.yarn.api.records.Resource divideAndCeil(org.apache.hadoop.yarn.api.records.Resource numerator, int denominator) Description copied from class:ResourceCalculatorDivide-and-ceilnumeratorbydenominator.- Specified by:
divideAndCeilin classResourceCalculator- Parameters:
numerator- numerator resourcedenominator- denominator- Returns:
- resultant resource
-
divideAndCeil
public org.apache.hadoop.yarn.api.records.Resource divideAndCeil(org.apache.hadoop.yarn.api.records.Resource numerator, float denominator) Description copied from class:ResourceCalculatorDivide-and-ceilnumeratorbydenominator.- Specified by:
divideAndCeilin classResourceCalculator- Parameters:
numerator- numerator resourcedenominator- denominator- Returns:
- resultant resource
-
normalize
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) Description copied from class:ResourceCalculatorNormalize resourcergiven the baseminimumResourceand verify against max allowedmaximumResourceusing a step factor for the normalization.- Specified by:
normalizein classResourceCalculator- Parameters:
r- resourceminimumResource- minimum valuemaximumResource- the upper bound of the resource to be allocatedstepFactor- the increment for resources to be allocated- Returns:
- normalized resource
-
roundUp
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) Description copied from class:ResourceCalculatorRound-up resourcergiven factorstepFactor.- Specified by:
roundUpin classResourceCalculator- Parameters:
r- resourcestepFactor- step-factor- Returns:
- rounded resource
-
roundDown
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) Description copied from class:ResourceCalculatorRound-down resourcergiven factorstepFactor.- Specified by:
roundDownin classResourceCalculator- Parameters:
r- resourcestepFactor- step-factor- Returns:
- rounded resource
-
multiplyAndNormalizeUp
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) Description copied from class:ResourceCalculatorMultiply resourcerby factorbyand normalize up using step-factorstepFactor.- Specified by:
multiplyAndNormalizeUpin classResourceCalculator- Parameters:
r- resource to be multipliedby- multiplierstepFactor- factor by which to normalize up- Returns:
- resulting normalized resource
-
multiplyAndNormalizeUp
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) Description copied from class:ResourceCalculatorMultiply resourcerby factorbyand normalize up using step-factorstepFactor.- Specified by:
multiplyAndNormalizeUpin classResourceCalculator- Parameters:
r- resource to be multipliedby- multiplier array for all resource typesstepFactor- factor by which to normalize up- Returns:
- resulting normalized resource
-
multiplyAndNormalizeDown
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) Description copied from class:ResourceCalculatorMultiply resourcerby factorbyand normalize down using step-factorstepFactor.- Specified by:
multiplyAndNormalizeDownin classResourceCalculator- Parameters:
r- resource to be multipliedby- multiplierstepFactor- factor by which to normalize down- Returns:
- resulting normalized resource
-
fitsIn
public boolean fitsIn(org.apache.hadoop.yarn.api.records.Resource smaller, org.apache.hadoop.yarn.api.records.Resource bigger) Description copied from class:ResourceCalculatorCheck if a smaller resource can be contained by bigger resource.- Specified by:
fitsInin classResourceCalculator- Parameters:
smaller- smaller resource.bigger- bigger resource.- Returns:
- if true, smaller resource can be contained by bigger resource; false otherwise.
-
normalizeDown
public org.apache.hadoop.yarn.api.records.Resource normalizeDown(org.apache.hadoop.yarn.api.records.Resource r, org.apache.hadoop.yarn.api.records.Resource stepFactor) Description copied from class:ResourceCalculatorGet resourcerand normalize down using step-factorstepFactor.- Specified by:
normalizeDownin classResourceCalculator- Parameters:
r- resource to be multipliedstepFactor- factor by which to normalize down- Returns:
- resulting normalized resource
-
isAnyMajorResourceZeroOrNegative
public boolean isAnyMajorResourceZeroOrNegative(org.apache.hadoop.yarn.api.records.Resource resource) Description copied from class:ResourceCalculatorCheck if resource has any major resource types (which are all NodeManagers included) a zero value or negative value.- Specified by:
isAnyMajorResourceZeroOrNegativein classResourceCalculator- Parameters:
resource- resource- Returns:
- returns true if any resource is zero.
-
isAnyMajorResourceAboveZero
public boolean isAnyMajorResourceAboveZero(org.apache.hadoop.yarn.api.records.Resource resource) Description copied from class:ResourceCalculatorCheck if resource has any major resource types (which are all NodeManagers included) has a > 0 value.- Specified by:
isAnyMajorResourceAboveZeroin classResourceCalculator- Parameters:
resource- resource- Returns:
- returns true if any resource is > 0
-
getInsufficientResourceNames
public Set<String> getInsufficientResourceNames(org.apache.hadoop.yarn.api.records.Resource required, org.apache.hadoop.yarn.api.records.Resource available) Description copied from class:ResourceCalculatorGet insufficient resource names via comparing required resource and capacity resource.- Specified by:
getInsufficientResourceNamesin classResourceCalculator- Parameters:
required- - required resourceavailable- - available resource- Returns:
- insufficient resource names
-
isAllInvalidDivisor
public boolean isAllInvalidDivisor(org.apache.hadoop.yarn.api.records.Resource r) Description copied from class:ResourceCalculatorDetermine if all resources are zero.- Specified by:
isAllInvalidDivisorin classResourceCalculator- Parameters:
r- resource- Returns:
- true if all divisors are invalid (should not be used), false else
-