public ObjectResources(String id) { this.id = id; this.availableResources = new NormalizedResourceOffer(); this.totalResources = new NormalizedResourceOffer(); }
public AllResources(String identifier) { this.identifier = identifier; this.availableResourcesOverall = new NormalizedResourceOffer(); this.totalResourcesOverall = new NormalizedResourceOffer(); }
public AllResources(AllResources other) { this(null, new NormalizedResourceOffer(other.availableResourcesOverall), new NormalizedResourceOffer(other.totalResourcesOverall), other.identifier); List<ObjectResources> objectResourcesList = new ArrayList<>(); for (ObjectResources objectResource : other.objectResources) { objectResourcesList.add(new ObjectResources(objectResource)); } this.objectResources = objectResourcesList; }
/** * Gets total resources for this node. */ public NormalizedResourceOffer getTotalResources() { if (sup != null) { return sup.getTotalResources(); } else { return new NormalizedResourceOffer(); } }
/** * Create the details of a new supervisor. * @param id the ID as reported by the supervisor. * @param serverPort the thrift server for the supervisor. * @param host the host the supervisor is on. * @param meta meta data reported by the supervisor (should be a collection of the ports on the supervisor). * @param schedulerMeta Not used and can probably be removed. * @param allPorts all of the ports for the supervisor (a better version of meta) * @param totalResources all of the resources for this supervisor. */ public SupervisorDetails(String id, Integer serverPort, String host, Object meta, Object schedulerMeta, Collection<? extends Number> allPorts, Map<String, Double> totalResources) { this.id = id; this.serverPort = serverPort; this.host = host; this.meta = meta; this.schedulerMeta = schedulerMeta; if (allPorts != null) { setAllPorts(allPorts); } else { this.allPorts = new HashSet<>(); } this.totalResources = new NormalizedResourceOffer(totalResources); LOG.debug("Creating a new supervisor ({}-{}) with resources: {}", this.host, this.id, totalResources); }
private NormalizedResourceOffer createOffer(Double cpu, Double memory) { Map<String, Double> resourceMap = new HashMap<>(); resourceMap.put(Constants.COMMON_CPU_RESOURCE_NAME, cpu); resourceMap.put(Constants.COMMON_TOTAL_MEMORY_RESOURCE_NAME, memory); return new NormalizedResourceOffer(resourceMap); } }
@Override public NormalizedResourceOffer getAvailableResources(SupervisorDetails sd) { NormalizedResourceOffer ret = new NormalizedResourceOffer(sd.getTotalResources()); for (SchedulerAssignment assignment: assignments.values()) { for (Entry<WorkerSlot, WorkerResources> entry: assignment.getScheduledResources().entrySet()) { if (sd.getId().equals(entry.getKey().getNodeId())) { ret.remove(entry.getValue(), getResourceMetrics()); } } } return ret; }
/** * Gets all available resources for this node. * * @return All of the available resources. */ public NormalizedResourceOffer getTotalAvailableResources() { if (sup != null) { NormalizedResourceOffer availableResources = new NormalizedResourceOffer(sup.getTotalResources()); if (availableResources.remove(cluster.getAllScheduledResourcesForNode(sup.getId()), cluster.getResourceMetrics())) { if (!loggedUnderageUsage) { LOG.error("Resources on {} became negative and was clamped to 0 {}.", hostname, availableResources); loggedUnderageUsage = true; } } return availableResources; } else { return new NormalizedResourceOffer(); } }
@Override public NormalizedResourceOffer getNonBlacklistedClusterAvailableResources(Collection<String> blacklistedSupervisorIds) { NormalizedResourceOffer available = new NormalizedResourceOffer(); for (SupervisorDetails sup : supervisors.values()) { if (!isBlackListed(sup.getId()) && !blacklistedSupervisorIds.contains(sup.getId())) { available.add(sup.getTotalResources()); available.remove(getAllScheduledResourcesForNode(sup.getId()), getResourceMetrics()); } } return available; }
int neededSlots = 0; NormalizedResourceOffer available = cluster.getNonBlacklistedClusterAvailableResources(blacklistedNodeIds); NormalizedResourceOffer needed = new NormalizedResourceOffer(); NormalizedResourceOffer shortage = new NormalizedResourceOffer(needed); shortage.remove(available, cluster.getResourceMetrics()); int shortageSlots = neededSlots - availableSlots;