@Override public List<AllocationResourceProto> reserve(QueryId queryId, NodeResourceRequest request) { List<AllocationResourceProto> reservedResources; NodeResource capacity = new NodeResource(request.getCapacity()); if (!NodeResources.fitsIn(capacity, getClusterResource())) { return Lists.newArrayList(); } LinkedList<Integer> workers = new LinkedList<Integer>(); if (request.getCandidateNodesCount() > 0) { workers.addAll(request.getCandidateNodesList()); Collections.shuffle(workers); } int requiredContainers = request.getNumContainers(); // reserve resource from candidate workers for locality reservedResources = reserveClusterResource(workers, capacity, requiredContainers); // reserve resource in random workers if (reservedResources.size() < requiredContainers) { LinkedList<Integer> randomNodes = new LinkedList<Integer>(getRMContext().getNodes().keySet()); Collections.shuffle(randomNodes); reservedResources.addAll(reserveClusterResource( randomNodes, capacity, requiredContainers - reservedResources.size())); } if (LOG.isDebugEnabled()) { LOG.debug("Request: " + request.getCapacity() + ", containerNum:" + request.getNumContainers() + "Current cluster resource: " + getClusterResource()); } return reservedResources; }
@Override public List<AllocationResourceProto> reserve(QueryId queryId, NodeResourceRequest request) { List<AllocationResourceProto> reservedResources; NodeResource capacity = new NodeResource(request.getCapacity()); if (!NodeResources.fitsIn(capacity, getClusterResource())) { return Lists.newArrayList(); } LinkedList<Integer> workers = new LinkedList<>(); if (request.getCandidateNodesCount() > 0) { workers.addAll(request.getCandidateNodesList()); Collections.shuffle(workers); } int requiredContainers = request.getNumContainers(); // reserve resource from candidate workers for locality reservedResources = reserveClusterResource(workers, capacity, requiredContainers); // reserve resource in random workers if (reservedResources.size() < requiredContainers) { LinkedList<Integer> randomNodes = new LinkedList<>(getRMContext().getNodes().keySet()); Collections.shuffle(randomNodes); reservedResources.addAll(reserveClusterResource( randomNodes, capacity, requiredContainers - reservedResources.size())); } if (LOG.isDebugEnabled()) { LOG.debug("Request: " + request.getCapacity() + ", containerNum:" + request.getNumContainers() + "Current cluster resource: " + getClusterResource()); } return reservedResources; }
hash = (53 * hash) + getNumContainers();
result = result && (getNumContainers() == other.getNumContainers());
hash = (53 * hash) + getNumContainers();
result = result && (getNumContainers() == other.getNumContainers());
setNumContainers(other.getNumContainers());
setNumContainers(other.getNumContainers());