[17/50] [abbrv] hadoop git commit: YARN-6909. Use LightWeightedResource when number of resource types more than two. (Sunil G via wangda)

2017-11-15 Thread aengineer
YARN-6909. Use LightWeightedResource when number of resource types more than 
two. (Sunil G via wangda)

Change-Id: I90e021c5dea7abd9ec6bd73b2287c8adebe14595


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/dd07038f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/dd07038f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/dd07038f

Branch: refs/heads/HDFS-7240
Commit: dd07038ffae33a5e73eb331477d43eaf3f4c2aaa
Parents: 1883a00
Author: Wangda Tan 
Authored: Thu Nov 9 14:51:15 2017 -0800
Committer: Wangda Tan 
Committed: Thu Nov 9 14:51:15 2017 -0800

--
 .../hadoop/yarn/api/records/Resource.java   | 48 ++
 .../api/records/impl/LightWeightResource.java   | 94 +---
 .../api/records/impl/pb/ResourcePBImpl.java | 88 +-
 .../scheduler/ClusterNodeTracker.java   |  2 +-
 4 files changed, 141 insertions(+), 91 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/dd07038f/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 be292ff..65b5dce 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
@@ -28,9 +28,9 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.classification.InterfaceStability.Stable;
 import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
 import org.apache.hadoop.yarn.api.records.impl.LightWeightResource;
 import org.apache.hadoop.yarn.exceptions.ResourceNotFoundException;
-import org.apache.hadoop.yarn.util.Records;
 import org.apache.hadoop.yarn.util.resource.ResourceUtils;
 
 /**
@@ -75,34 +75,27 @@ public abstract class Resource implements 
Comparable {
   @Public
   @Stable
   public static Resource newInstance(int memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @Public
   @Stable
   public static Resource newInstance(long memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @InterfaceAudience.Private
   @InterfaceStability.Unstable
   public static Resource newInstance(Resource resource) {
-Resource ret = Resource.newInstance(resource.getMemorySize(),
-resource.getVirtualCores());
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource.copy(resource, ret);
+Resource ret;
+int numberOfKnownResourceTypes = ResourceUtils
+.getNumberOfKnownResourceTypes();
+if (numberOfKnownResourceTypes > 2) {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores(), resource.getResources());
+} else {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores());
 }
 return ret;
   }
@@ -411,7 +404,7 @@ public abstract class Resource implements 
Comparable {
 int arrLenOther = otherResources.length;
 
 // compare memory and vcores first(in that order) to preserve
-// existing behaviour
+// existing behavior.
 for (int i = 0; i < arrLenThis; i++) {
   ResourceInformation otherEntry;
   try {
@@ -483,4 +476,23 @@ public abstract class Resource implements 
Comparable {
 }
 return Long.valueOf(value).intValue();
   }
+
+  /**
+   * Create ResourceInformation with basic fields.
+   * @param name Resource Type Name
+   * @param unit Default unit of provided resource type
+   * @param value Value associated with giveb resource
+   * @return ResourceInformation object
+   */
+  protected static ResourceInformation newDefaultInformation(String name,
+  String unit, long value) {
+ResourceInformation ri = new ResourceInformation();
+ri.setName(name);
+ri.setValue(value);
+ri.setResourceType(ResourceTypes.COUNTAB

[26/50] [abbrv] hadoop git commit: YARN-6909. Use LightWeightedResource when number of resource types more than two. (Sunil G via wangda)

2017-11-13 Thread kkaranasos
YARN-6909. Use LightWeightedResource when number of resource types more than 
two. (Sunil G via wangda)

Change-Id: I90e021c5dea7abd9ec6bd73b2287c8adebe14595


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/dd07038f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/dd07038f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/dd07038f

Branch: refs/heads/YARN-6592
Commit: dd07038ffae33a5e73eb331477d43eaf3f4c2aaa
Parents: 1883a00
Author: Wangda Tan 
Authored: Thu Nov 9 14:51:15 2017 -0800
Committer: Wangda Tan 
Committed: Thu Nov 9 14:51:15 2017 -0800

--
 .../hadoop/yarn/api/records/Resource.java   | 48 ++
 .../api/records/impl/LightWeightResource.java   | 94 +---
 .../api/records/impl/pb/ResourcePBImpl.java | 88 +-
 .../scheduler/ClusterNodeTracker.java   |  2 +-
 4 files changed, 141 insertions(+), 91 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/dd07038f/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 be292ff..65b5dce 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
@@ -28,9 +28,9 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.classification.InterfaceStability.Stable;
 import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
 import org.apache.hadoop.yarn.api.records.impl.LightWeightResource;
 import org.apache.hadoop.yarn.exceptions.ResourceNotFoundException;
-import org.apache.hadoop.yarn.util.Records;
 import org.apache.hadoop.yarn.util.resource.ResourceUtils;
 
 /**
@@ -75,34 +75,27 @@ public abstract class Resource implements 
Comparable {
   @Public
   @Stable
   public static Resource newInstance(int memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @Public
   @Stable
   public static Resource newInstance(long memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @InterfaceAudience.Private
   @InterfaceStability.Unstable
   public static Resource newInstance(Resource resource) {
-Resource ret = Resource.newInstance(resource.getMemorySize(),
-resource.getVirtualCores());
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource.copy(resource, ret);
+Resource ret;
+int numberOfKnownResourceTypes = ResourceUtils
+.getNumberOfKnownResourceTypes();
+if (numberOfKnownResourceTypes > 2) {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores(), resource.getResources());
+} else {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores());
 }
 return ret;
   }
@@ -411,7 +404,7 @@ public abstract class Resource implements 
Comparable {
 int arrLenOther = otherResources.length;
 
 // compare memory and vcores first(in that order) to preserve
-// existing behaviour
+// existing behavior.
 for (int i = 0; i < arrLenThis; i++) {
   ResourceInformation otherEntry;
   try {
@@ -483,4 +476,23 @@ public abstract class Resource implements 
Comparable {
 }
 return Long.valueOf(value).intValue();
   }
+
+  /**
+   * Create ResourceInformation with basic fields.
+   * @param name Resource Type Name
+   * @param unit Default unit of provided resource type
+   * @param value Value associated with giveb resource
+   * @return ResourceInformation object
+   */
+  protected static ResourceInformation newDefaultInformation(String name,
+  String unit, long value) {
+ResourceInformation ri = new ResourceInformation();
+ri.setName(name);
+ri.setValue(value);
+ri.setResourceType(ResourceTypes.COUNTAB

hadoop git commit: YARN-6909. Use LightWeightedResource when number of resource types more than two. (Sunil G via wangda)

2017-11-13 Thread wang
Repository: hadoop
Updated Branches:
  refs/heads/branch-3.0 cb48eea92 -> 7b3cd1013


YARN-6909. Use LightWeightedResource when number of resource types more than 
two. (Sunil G via wangda)

Change-Id: I90e021c5dea7abd9ec6bd73b2287c8adebe14595


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7b3cd101
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7b3cd101
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7b3cd101

Branch: refs/heads/branch-3.0
Commit: 7b3cd10131ede9172c7682e2116aa76f05590a99
Parents: cb48eea
Author: Wangda Tan 
Authored: Thu Nov 9 14:51:15 2017 -0800
Committer: Andrew Wang 
Committed: Mon Nov 13 14:45:40 2017 -0800

--
 .../hadoop/yarn/api/records/Resource.java   | 48 ++
 .../api/records/impl/LightWeightResource.java   | 94 +---
 .../api/records/impl/pb/ResourcePBImpl.java | 88 +-
 .../scheduler/ClusterNodeTracker.java   |  2 +-
 4 files changed, 141 insertions(+), 91 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/7b3cd101/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 14131cb..e863d68 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
@@ -28,9 +28,9 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.classification.InterfaceStability.Stable;
 import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
 import org.apache.hadoop.yarn.api.records.impl.LightWeightResource;
 import org.apache.hadoop.yarn.exceptions.ResourceNotFoundException;
-import org.apache.hadoop.yarn.util.Records;
 import org.apache.hadoop.yarn.util.resource.ResourceUtils;
 
 /**
@@ -75,34 +75,27 @@ public abstract class Resource implements 
Comparable {
   @Public
   @Stable
   public static Resource newInstance(int memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @Public
   @Stable
   public static Resource newInstance(long memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @InterfaceAudience.Private
   @InterfaceStability.Unstable
   public static Resource newInstance(Resource resource) {
-Resource ret = Resource.newInstance(resource.getMemorySize(),
-resource.getVirtualCores());
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource.copy(resource, ret);
+Resource ret;
+int numberOfKnownResourceTypes = ResourceUtils
+.getNumberOfKnownResourceTypes();
+if (numberOfKnownResourceTypes > 2) {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores(), resource.getResources());
+} else {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores());
 }
 return ret;
   }
@@ -411,7 +404,7 @@ public abstract class Resource implements 
Comparable {
 int arrLenOther = otherResources.length;
 
 // compare memory and vcores first(in that order) to preserve
-// existing behaviour
+// existing behavior.
 for (int i = 0; i < arrLenThis; i++) {
   ResourceInformation otherEntry;
   try {
@@ -483,4 +476,23 @@ public abstract class Resource implements 
Comparable {
 }
 return Long.valueOf(value).intValue();
   }
+
+  /**
+   * Create ResourceInformation with basic fields.
+   * @param name Resource Type Name
+   * @param unit Default unit of provided resource type
+   * @param value Value associated with giveb resource
+   * @return ResourceInformation object
+   */
+  protected static ResourceInformation newDefaultInformation(String name,
+  String unit, long value) {
+ResourceInformation ri = new ResourceInformation();
+   

[37/50] [abbrv] hadoop git commit: YARN-6909. Use LightWeightedResource when number of resource types more than two. (Sunil G via wangda)

2017-11-11 Thread sunilg
YARN-6909. Use LightWeightedResource when number of resource types more than 
two. (Sunil G via wangda)

Change-Id: I90e021c5dea7abd9ec6bd73b2287c8adebe14595


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/dd07038f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/dd07038f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/dd07038f

Branch: refs/heads/YARN-5881
Commit: dd07038ffae33a5e73eb331477d43eaf3f4c2aaa
Parents: 1883a00
Author: Wangda Tan 
Authored: Thu Nov 9 14:51:15 2017 -0800
Committer: Wangda Tan 
Committed: Thu Nov 9 14:51:15 2017 -0800

--
 .../hadoop/yarn/api/records/Resource.java   | 48 ++
 .../api/records/impl/LightWeightResource.java   | 94 +---
 .../api/records/impl/pb/ResourcePBImpl.java | 88 +-
 .../scheduler/ClusterNodeTracker.java   |  2 +-
 4 files changed, 141 insertions(+), 91 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/dd07038f/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 be292ff..65b5dce 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
@@ -28,9 +28,9 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.classification.InterfaceStability.Stable;
 import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
 import org.apache.hadoop.yarn.api.records.impl.LightWeightResource;
 import org.apache.hadoop.yarn.exceptions.ResourceNotFoundException;
-import org.apache.hadoop.yarn.util.Records;
 import org.apache.hadoop.yarn.util.resource.ResourceUtils;
 
 /**
@@ -75,34 +75,27 @@ public abstract class Resource implements 
Comparable {
   @Public
   @Stable
   public static Resource newInstance(int memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @Public
   @Stable
   public static Resource newInstance(long memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @InterfaceAudience.Private
   @InterfaceStability.Unstable
   public static Resource newInstance(Resource resource) {
-Resource ret = Resource.newInstance(resource.getMemorySize(),
-resource.getVirtualCores());
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource.copy(resource, ret);
+Resource ret;
+int numberOfKnownResourceTypes = ResourceUtils
+.getNumberOfKnownResourceTypes();
+if (numberOfKnownResourceTypes > 2) {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores(), resource.getResources());
+} else {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores());
 }
 return ret;
   }
@@ -411,7 +404,7 @@ public abstract class Resource implements 
Comparable {
 int arrLenOther = otherResources.length;
 
 // compare memory and vcores first(in that order) to preserve
-// existing behaviour
+// existing behavior.
 for (int i = 0; i < arrLenThis; i++) {
   ResourceInformation otherEntry;
   try {
@@ -483,4 +476,23 @@ public abstract class Resource implements 
Comparable {
 }
 return Long.valueOf(value).intValue();
   }
+
+  /**
+   * Create ResourceInformation with basic fields.
+   * @param name Resource Type Name
+   * @param unit Default unit of provided resource type
+   * @param value Value associated with giveb resource
+   * @return ResourceInformation object
+   */
+  protected static ResourceInformation newDefaultInformation(String name,
+  String unit, long value) {
+ResourceInformation ri = new ResourceInformation();
+ri.setName(name);
+ri.setValue(value);
+ri.setResourceType(ResourceTypes.COUNTAB

hadoop git commit: YARN-6909. Use LightWeightedResource when number of resource types more than two. (Sunil G via wangda)

2017-11-09 Thread wangda
Repository: hadoop
Updated Branches:
  refs/heads/trunk 1883a0024 -> dd07038ff


YARN-6909. Use LightWeightedResource when number of resource types more than 
two. (Sunil G via wangda)

Change-Id: I90e021c5dea7abd9ec6bd73b2287c8adebe14595


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/dd07038f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/dd07038f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/dd07038f

Branch: refs/heads/trunk
Commit: dd07038ffae33a5e73eb331477d43eaf3f4c2aaa
Parents: 1883a00
Author: Wangda Tan 
Authored: Thu Nov 9 14:51:15 2017 -0800
Committer: Wangda Tan 
Committed: Thu Nov 9 14:51:15 2017 -0800

--
 .../hadoop/yarn/api/records/Resource.java   | 48 ++
 .../api/records/impl/LightWeightResource.java   | 94 +---
 .../api/records/impl/pb/ResourcePBImpl.java | 88 +-
 .../scheduler/ClusterNodeTracker.java   |  2 +-
 4 files changed, 141 insertions(+), 91 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/dd07038f/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 be292ff..65b5dce 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
@@ -28,9 +28,9 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.classification.InterfaceStability.Stable;
 import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
 import org.apache.hadoop.yarn.api.records.impl.LightWeightResource;
 import org.apache.hadoop.yarn.exceptions.ResourceNotFoundException;
-import org.apache.hadoop.yarn.util.Records;
 import org.apache.hadoop.yarn.util.resource.ResourceUtils;
 
 /**
@@ -75,34 +75,27 @@ public abstract class Resource implements 
Comparable {
   @Public
   @Stable
   public static Resource newInstance(int memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @Public
   @Stable
   public static Resource newInstance(long memory, int vCores) {
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource ret = Records.newRecord(Resource.class);
-  ret.setMemorySize(memory);
-  ret.setVirtualCores(vCores);
-  return ret;
-}
 return new LightWeightResource(memory, vCores);
   }
 
   @InterfaceAudience.Private
   @InterfaceStability.Unstable
   public static Resource newInstance(Resource resource) {
-Resource ret = Resource.newInstance(resource.getMemorySize(),
-resource.getVirtualCores());
-if (ResourceUtils.getNumberOfKnownResourceTypes() > 2) {
-  Resource.copy(resource, ret);
+Resource ret;
+int numberOfKnownResourceTypes = ResourceUtils
+.getNumberOfKnownResourceTypes();
+if (numberOfKnownResourceTypes > 2) {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores(), resource.getResources());
+} else {
+  ret = new LightWeightResource(resource.getMemorySize(),
+  resource.getVirtualCores());
 }
 return ret;
   }
@@ -411,7 +404,7 @@ public abstract class Resource implements 
Comparable {
 int arrLenOther = otherResources.length;
 
 // compare memory and vcores first(in that order) to preserve
-// existing behaviour
+// existing behavior.
 for (int i = 0; i < arrLenThis; i++) {
   ResourceInformation otherEntry;
   try {
@@ -483,4 +476,23 @@ public abstract class Resource implements 
Comparable {
 }
 return Long.valueOf(value).intValue();
   }
+
+  /**
+   * Create ResourceInformation with basic fields.
+   * @param name Resource Type Name
+   * @param unit Default unit of provided resource type
+   * @param value Value associated with giveb resource
+   * @return ResourceInformation object
+   */
+  protected static ResourceInformation newDefaultInformation(String name,
+  String unit, long value) {
+ResourceInformation ri = new ResourceInformation();
+ri.setName(