org.apache.hadoop.yarn.api.records.Resource.getResources()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(12.8k)|赞(0)|评价(0)|浏览(71)

本文整理了Java中org.apache.hadoop.yarn.api.records.Resource.getResources方法的一些代码示例,展示了Resource.getResources的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Resource.getResources方法的具体详情如下:
包路径:org.apache.hadoop.yarn.api.records.Resource
类名称:Resource
方法名:getResources

Resource.getResources介绍

[英]Get ResourceInformation for all resources.
[中]获取所有资源的资源信息。

代码示例

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

@Override
public boolean isInvalidDivisor(Resource r) {
 for (ResourceInformation res : r.getResources()) {
  if (res.getValue() == 0L) {
   return true;
  }
 }
 return false;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

public String getSchedulerResourceTypes() {
 if (minAllocResource != null) {
  return Arrays.toString(minAllocResource.getResource().getResources());
 }
 return null;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

/**
 * Calculate a resource's min share ratios. The {@code ratios} array will be
 * populated with the {@code resource} divided by {@code minShare} for each
 * resource type. If the min shares are 5 MB and 10 vcores, and the usage
 * ({@code resource}) is 10 MB and 5 CPU, the ratios will be 2 and 0.5.
 *
 * The {@code ratios} array must be <i>n</i> x 3, where <i>n</i> is the
 * number of resource types. Only the third index of the inner arrays in
 * the {@code ratios} array will be used, e.g. {@code ratios[x][2]}.
 *
 * @param resource the resource for which to calculate min shares
 * @param minShare the min share
 * @param ratios the share ratios array to populate
 */
@VisibleForTesting
void calculateMinShareRatios(Resource resource, Resource minShare,
  float[][] ratios) {
 ResourceInformation[] resourceInfo = resource.getResources();
 ResourceInformation[] minShareInfo = minShare.getResources();
 for (int i = 0; i < minShareInfo.length; i++) {
  ratios[i][2] =
    resourceInfo[i].getValue() / (float) minShareInfo[i].getValue();
 }
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-api

@Override
public boolean equals(Object obj) {
 if (this == obj) {
  return true;
 }
 if (obj == null) {
  return false;
 }
 if (!(obj instanceof Resource)) {
  return false;
 }
 Resource other = (Resource) obj;
 ResourceInformation[] otherVectors = other.getResources();
 if (resources.length != otherVectors.length) {
  return false;
 }
 for (int i = 0; i < resources.length; i++) {
  ResourceInformation a = resources[i];
  ResourceInformation b = otherVectors[i];
  if ((a != b) && ((a == null) || !a.equals(b))) {
   return false;
  }
 }
 return true;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-api

@Override
public int compareTo(Resource other) {
 ResourceInformation[] otherResources = other.getResources();
 int arrLenThis = this.resources.length;
 int arrLenOther = otherResources.length;
 // compare memory and vcores first(in that order) to preserve
 // existing behavior.
 for (int i = 0; i < arrLenThis; i++) {
  ResourceInformation otherEntry;
  try {
   otherEntry = otherResources[i];
  } catch (ArrayIndexOutOfBoundsException e) {
   // For two vectors with different size and same prefix. Shorter vector
   // goes first.
   return 1;
  }
  ResourceInformation entry = resources[i];
  long diff = entry.compareTo(otherEntry);
  if (diff > 0) {
   return 1;
  } else if (diff < 0) {
   return -1;
  }
 }
 if (arrLenThis < arrLenOther) {
  return -1;
 }
 return 0;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

private void updateUsageMap(Resource allocated, long deltaUsedMillis,
  Map<String, AtomicLong> targetMap) {
 for (ResourceInformation entry : allocated.getResources()) {
  AtomicLong resourceUsed;
  if (!targetMap.containsKey(entry.getName())) {
   resourceUsed = new AtomicLong(0);
   targetMap.put(entry.getName(), resourceUsed);
  }
  resourceUsed = targetMap.get(entry.getName());
  resourceUsed.addAndGet((entry.getValue() * deltaUsedMillis)
    / DateUtils.MILLIS_PER_SECOND);
 }
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

/**
 * Calculate the shares for {@code first} and {@code second} according to
 * {@code clusterRes}, and store the results in {@code firstShares} and
 * {@code secondShares}, respectively. All parameters must be non-null.
 * @param clusterRes the array of ResourceInformation instances that
 * represents the cluster's maximum resources
 * @param first the first resource to compare
 * @param second the second resource to compare
 * @param firstShares an array to store the shares for the first resource
 * @param secondShares an array to store the shares for the second resource
 * @return -1.0, 0.0, or 1.0, depending on whether the max share of the first
 * resource is less than, equal to, or greater than the max share of the
 * second resource, respectively
 * @throws NullPointerException if any parameter is null
 */
private void calculateShares(ResourceInformation[] clusterRes, Resource first,
  Resource second, double[] firstShares, double[] secondShares) {
 ResourceInformation[] firstRes = first.getResources();
 ResourceInformation[] secondRes = second.getResources();
 int maxLength = ResourceUtils.getNumberOfKnownResourceTypes();
 for (int i = 0; i < maxLength; i++) {
  firstShares[i] = calculateShare(clusterRes[i], firstRes[i]);
  secondShares[i] = calculateShare(clusterRes[i], secondRes[i]);
 }
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

@Override
public float divide(Resource clusterResource,
  Resource numerator, Resource denominator) {
 int nKnownResourceTypes = ResourceUtils.getNumberOfKnownResourceTypes();
 ResourceInformation[] clusterRes = clusterResource.getResources();
 // We have to provide the calculateShares() method with somewhere to store
 // the shares. We don't actually need these shares afterwards.
 double[] numeratorShares = new double[nKnownResourceTypes];
 double[] denominatorShares = new double[nKnownResourceTypes];
 // We also have to provide a place for calculateShares() to store the max
 // shares so that we can use them.
 double[] max = new double[2];
 calculateShares(clusterRes, numerator, denominator, numeratorShares,
   denominatorShares, max);
 return (float) (max[0] / max[1]);
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

public static Map<String, Long> convertStringLongMapProtoListToMap(
  List<YarnProtos.StringLongMapProto> pList) {
 Resource tmp = Resource.newInstance(0, 0);
 Map<String, Long> ret = new HashMap<>();
 for (ResourceInformation entry : tmp.getResources()) {
  ret.put(entry.getName(), 0L);
 }
 if (pList != null) {
  for (YarnProtos.StringLongMapProto p : pList) {
   ret.put(p.getKey(), p.getValue());
  }
 }
 return ret;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-api

@InterfaceAudience.Private
@InterfaceStability.Unstable
public static void copy(Resource source, Resource dest) {
 for (ResourceInformation entry : source.getResources()) {
  dest.setResourceInformation(entry.getName(), entry);
 }
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

private AggregateAppResourceUsage getRunningAggregateAppResourceUsage() {
 long currentTimeMillis = System.currentTimeMillis();
 // Don't walk the whole container list if the resources were computed
 // recently.
 if ((currentTimeMillis - lastMemoryAggregateAllocationUpdateTime)
   > MEM_AGGREGATE_ALLOCATION_CACHE_MSECS) {
  Map<String, Long> resourceSecondsMap = new HashMap<>();
  for (RMContainer rmContainer : this.liveContainers.values()) {
   long usedMillis = currentTimeMillis - rmContainer.getCreationTime();
   Resource resource = rmContainer.getContainer().getResource();
   for (ResourceInformation entry : resource.getResources()) {
    long value = RMServerUtils
      .getOrDefault(resourceSecondsMap, entry.getName(), 0L);
    value += entry.getValue() * usedMillis
      / DateUtils.MILLIS_PER_SECOND;
    resourceSecondsMap.put(entry.getName(), value);
   }
  }
  lastMemoryAggregateAllocationUpdateTime = currentTimeMillis;
  lastResourceSecondsMap = resourceSecondsMap;
 }
 return new AggregateAppResourceUsage(lastResourceSecondsMap);
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

allowQueuesBalanceAfterAllQueuesSatisfied;
stepFactor = Resource.newInstance(0, 0);
for (ResourceInformation ri : stepFactor.getResources()) {
 ri.setValue(1);

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

/**
 * Get resource by multiplying the cluster resource and the percentage of
 * each resource respectively. Return the absolute resource if either
 * {@code percentages} or {@code clusterResource} is null.
 *
 * @param clusterResource the cluster resource
 * @return resource the resulting resource
 */
public Resource getResource(Resource clusterResource) {
 if (percentages != null && clusterResource != null) {
  long memory = (long) (clusterResource.getMemorySize() * percentages[0]);
  int vcore = (int) (clusterResource.getVirtualCores() * percentages[1]);
  Resource res = Resource.newInstance(memory, vcore);
  ResourceInformation[] clusterInfo = clusterResource.getResources();
  for (int i = 2; i < clusterInfo.length; i++) {
   res.setResourceValue(i,
     (long)(clusterInfo[i].getValue() * percentages[i]));
  }
  return res;
 } else {
  return resource;
 }
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-api

@Override
public boolean equals(Object obj) {
 if (this == obj) {
  return true;
 }
 if (obj == null || !(obj instanceof Resource)) {
  return false;
 }
 Resource other = (Resource) obj;
 if (getMemorySize() != other.getMemorySize()
   || getVirtualCores() != other.getVirtualCores()) {
  return false;
 }
 if (resources.length > 2) {
  ResourceInformation[] otherVectors = other.getResources();
  if (resources.length != otherVectors.length) {
   return false;
  }
  for (int i = 2; i < resources.length; i++) {
   ResourceInformation a = resources[i];
   ResourceInformation b = otherVectors[i];
   if ((a != b) && ((a == null) || !a.equals(b))) {
    return false;
   }
  }
 }
 return true;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

static ResourceProto getProto(Resource r) {
 final ResourcePBImpl pb;
 if (r instanceof ResourcePBImpl) {
  pb = (ResourcePBImpl) r;
 } else {
  pb = new ResourcePBImpl();
  pb.setMemorySize(r.getMemorySize());
  pb.setVirtualCores(r.getVirtualCores());
  for(ResourceInformation res : r.getResources()) {
   pb.setResourceInformation(res.getName(), res);
  }
 }
 return pb.getProto();
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

@Test
public void testCalculateMinShareRatios2() {
 ResourceUtils.resetResourceTypes(new Configuration());
 Resource used = Resources.createResource(10, 5);
 Resource minShares = Resources.createResource(5, 10);
 DominantResourceFairnessComparator2 comparator =
   new DominantResourceFairnessComparator2();
 double[] ratios =
   comparator.calculateMinShareRatios(used.getResources(),
     minShares.getResources());
 assertEquals("Calculated min share ratio for memory (10MB out of 5MB) is "
   + "incorrect", 2.0, ratios[Resource.MEMORY_INDEX], .00001f);
 assertEquals("Calculated min share ratio for vcores (5 out of 10) is "
   + "incorrect", 0.5, ratios[Resource.VCORES_INDEX], .00001f);
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

@Test
public void testGetResourceInformation() throws Exception {
 Configuration conf = new YarnConfiguration();
 Map<String, Resource> testRun = new HashMap<>();
 setupResourceTypes(conf, "resource-types-4.xml");
 // testRun.put("node-resources-1.xml", Resource.newInstance(1024, 1));
 Resource test3Resources = Resource.newInstance(0, 0);
 test3Resources.setResourceInformation("resource1",
   ResourceInformation.newInstance("resource1", "Gi", 5L));
 test3Resources.setResourceInformation("resource2",
   ResourceInformation.newInstance("resource2", "m", 2L));
 test3Resources.setResourceInformation("yarn.io/gpu",
   ResourceInformation.newInstance("yarn.io/gpu", "", 1));
 testRun.put("node-resources-2.xml", test3Resources);
 for (Map.Entry<String, Resource> entry : testRun.entrySet()) {
  String resourceFile = entry.getKey();
  ResourceUtils.resetNodeResources();
  File source = new File(
    conf.getClassLoader().getResource(resourceFile).getFile());
  nodeResourcesFile = new File(source.getParent(), "node-resources.xml");
  FileUtils.copyFile(source, nodeResourcesFile);
  Map<String, ResourceInformation> actual = ResourceUtils
    .getNodeResourceInformation(conf);
  Assert.assertEquals(actual.size(),
    entry.getValue().getResources().length);
  for (ResourceInformation resInfo : entry.getValue().getResources()) {
   Assert.assertEquals(resInfo, actual.get(resInfo.getName()));
  }
 }
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-common

.getNodeResourceInformation(conf);
Assert.assertEquals(actual.size(),
  entry.getValue().getResources().length);
for (ResourceInformation resInfo : entry.getValue().getResources()) {
 Assert.assertEquals(resInfo, actual.get(resInfo.getName()));

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-api

@InterfaceAudience.Private
@InterfaceStability.Unstable
public static Resource newInstance(Resource resource) {
 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;
}

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-server-resourcemanager

@Test
public void testCalculateClusterAndFairRatios2() {
 ResourceUtils.resetResourceTypes(new Configuration());
 Resource used = Resources.createResource(10, 5);
 Resource capacity = Resources.createResource(100, 10);
 double[] shares = new double[2];
 DominantResourceFairnessComparator2 comparator =
   new DominantResourceFairnessComparator2();
 int dominant =
   comparator.calculateClusterAndFairRatios(used.getResources(), 1.0f,
     capacity.getResources(), shares);
 assertEquals("Calculated usage ratio for memory (10MB out of 100MB) is "
   + "incorrect", 0.1, shares[Resource.MEMORY_INDEX], .00001);
 assertEquals("Calculated usage ratio for vcores (5 out of 10) is "
   + "incorrect", 0.5, shares[Resource.VCORES_INDEX], .00001);
 assertEquals("The wrong dominant resource index was returned",
   Resource.VCORES_INDEX, dominant);
}

相关文章