You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by wa...@apache.org on 2017/09/12 16:26:39 UTC
[06/40] hadoop git commit: YARN-5242. Update
DominantResourceCalculator to consider all resource types in calculations.
Contributed by Varun Vasudev.
YARN-5242. Update DominantResourceCalculator to consider all resource types in calculations. Contributed by Varun Vasudev.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9e4ba6af
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9e4ba6af
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9e4ba6af
Branch: refs/heads/trunk
Commit: 9e4ba6aff595b7a5b53d016c97c8334e10f1f2cb
Parents: 759114b
Author: Rohith Sharma K S <ro...@apache.org>
Authored: Tue Jul 26 14:13:03 2016 +0530
Committer: Wangda Tan <wa...@apache.org>
Committed: Tue Sep 12 09:19:10 2017 -0700
----------------------------------------------------------------------
.../hadoop/yarn/api/records/Resource.java | 7 ++++++
.../api/records/impl/pb/ResourcePBImpl.java | 2 +-
.../resource/DominantResourceCalculator.java | 23 ++++++++++++++++----
.../yarn/util/resource/ResourceUtils.java | 5 +++--
.../hadoop/yarn/util/resource/Resources.java | 6 +----
5 files changed, 31 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e4ba6af/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java
index c9c6a7a..507247e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java
@@ -327,6 +327,8 @@ public abstract class Resource implements Comparable<Resource> {
otherResources = other.getResources();
long diff = thisResources.size() - otherResources.size();
if (diff == 0) {
+ // compare memory and vcores first(in that order) to preserve
+ // existing behaviour
if (thisResources.keySet().equals(otherResources.keySet())) {
diff = this.getMemorySize() - other.getMemorySize();
if (diff == 0) {
@@ -335,6 +337,11 @@ public abstract class Resource implements Comparable<Resource> {
if (diff == 0) {
for (Map.Entry<String, ResourceInformation> entry : thisResources
.entrySet()) {
+ if (entry.getKey().equals(ResourceInformation.MEMORY_MB.getName())
+ || entry.getKey()
+ .equals(ResourceInformation.VCORES.getName())) {
+ continue;
+ }
diff =
entry.getValue().compareTo(otherResources.get(entry.getKey()));
if (diff != 0) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e4ba6af/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java
index 86ae41f..b51121b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java
@@ -242,7 +242,7 @@ public class ResourcePBImpl extends Resource {
builder.addResourceValueMap(e);
}
}
- builder.setMemory(this.getMemory());
+ builder.setMemory(this.getMemorySize());
builder.setVirtualCores(this.getVirtualCores());
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e4ba6af/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java
index 0412c0f..3c4413c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java
@@ -397,10 +397,25 @@ public class DominantResourceCalculator extends ResourceCalculator {
}
@Override
- public boolean fitsIn(Resource cluster,
- Resource smaller, Resource bigger) {
- return smaller.getMemorySize() <= bigger.getMemorySize()
- && smaller.getVirtualCores() <= bigger.getVirtualCores();
+ public boolean fitsIn(Resource cluster, Resource smaller, Resource bigger) {
+ for (String resource : resourceNames) {
+ try {
+ ResourceInformation sResourceInformation =
+ smaller.getResourceInformation(resource);
+ ResourceInformation bResourceInformation =
+ bigger.getResourceInformation(resource);
+ Long sResourceValue = UnitsConversionUtil
+ .convert(sResourceInformation.getUnits(),
+ bResourceInformation.getUnits(),
+ sResourceInformation.getValue());
+ if(sResourceValue > bResourceInformation.getValue()) {
+ return false;
+ }
+ } catch (YarnException ye) {
+ return false;
+ }
+ }
+ return true;
}
@Override
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e4ba6af/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java
index 4f56fbb..109287a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java
@@ -178,7 +178,6 @@ public class ResourceUtils {
synchronized (ResourceUtils.class) {
if (lock == null) {
synchronized (ResourceUtils.class) {
- lock = new Object();
Map<String, ResourceInformation> resources = new HashMap<>();
if (conf == null) {
conf = new YarnConfiguration();
@@ -187,10 +186,12 @@ public class ResourceUtils {
addResourcesFileToConf(resourceFile, conf);
LOG.debug("Found " + resourceFile + ", adding to configuration");
initializeResourcesMap(conf, resources);
+ lock = new Object();
} catch (FileNotFoundException fe) {
LOG.info("Unable to find '" + resourceFile
+ "'. Falling back to memory and vcores as resources", fe);
initializeResourcesMap(conf, resources);
+ lock = new Object();
}
}
}
@@ -268,12 +269,12 @@ public class ResourceUtils {
synchronized (ResourceUtils.class) {
if (nodeLock == null) {
synchronized (ResourceUtils.class) {
- nodeLock = new Object();
Map<String, ResourceInformation> nodeResources =
initializeNodeResourceInformation(conf);
addManadtoryResources(nodeResources);
checkMandatatoryResources(nodeResources);
readOnlyNodeResources = Collections.unmodifiableMap(nodeResources);
+ nodeLock = new Object();
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/9e4ba6af/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java
index 836f87e..73776e7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java
@@ -134,16 +134,12 @@ public class Resources {
private Map<String, ResourceInformation> initResourceMap() {
Map<String, ResourceInformation> tmp = new HashMap<>();
- // Due to backwards compat, the max value for memory and vcores
- // needs to be Integer.MAX_VALUE
- int max = resourceValue > Integer.MAX_VALUE ? Integer.MAX_VALUE :
- resourceValue.intValue();
Map<String, ResourceInformation> types = ResourceUtils.getResourceTypes();
if (types != null) {
for (Map.Entry<String, ResourceInformation> entry : types.entrySet()) {
tmp.put(entry.getKey(),
ResourceInformation.newInstance(entry.getValue()));
- tmp.get(entry.getKey()).setValue((long) max);
+ tmp.get(entry.getKey()).setValue(resourceValue);
}
}
return tmp;
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org