public class LocalitySchedulingPlacementSet<N extends SchedulerNode> extends Object implements SchedulingPlacementSet<N>
Constructor and Description |
---|
LocalitySchedulingPlacementSet(AppSchedulingInfo info) |
Modifier and Type | Method and Description |
---|---|
boolean |
acceptNodePartition(String nodePartition,
SchedulingMode schedulingMode)
Does this
SchedulingPlacementSet accept resources on nodePartition? |
List<org.apache.hadoop.yarn.api.records.ResourceRequest> |
allocate(org.apache.hadoop.yarn.server.scheduler.SchedulerRequestKey schedulerKey,
NodeType type,
SchedulerNode node)
Notify container allocated.
|
boolean |
canAllocate(NodeType type,
SchedulerNode node)
We can still have pending requirement for a given NodeType and node
|
boolean |
canDelayTo(String resourceName)
Can delay to give locality?
TODO (wangda): This should be moved out of SchedulingPlacementSet
and should belong to specific delay scheduling policy impl.
|
org.apache.hadoop.yarn.api.records.ResourceRequest |
cloneResourceRequest(org.apache.hadoop.yarn.api.records.ResourceRequest request) |
Iterator<String> |
getAcceptedResouceNames()
Returns list of accepted resourceNames.
|
int |
getOutstandingAsksCount(String resourceName)
Get #pending-allocations for given resourceName.
|
PendingAsk |
getPendingAsk(String resourceName)
Get pending ask for given resourceName.
|
Iterator<N> |
getPreferredNodeIterator(PlacementSet<N> clusterPlacementSet)
Get iterator of preferred node depends on requirement and/or availability
|
String |
getPrimaryRequestedNodePartition()
It is possible that one request can accept multiple node partition,
So this method returns primary node partition for pending resource /
headroom calculation.
|
Map<String,org.apache.hadoop.yarn.api.records.ResourceRequest> |
getResourceRequests()
Get pending ResourceRequests by given schedulerRequestKey
|
int |
getUniqueLocationAsks() |
void |
showRequests()
Print human-readable requests to LOG debug.
|
ResourceRequestUpdateResult |
updateResourceRequests(Collection<org.apache.hadoop.yarn.api.records.ResourceRequest> requests,
boolean recoverPreemptedRequestForAContainer)
Replace existing ResourceRequest by the new requests
|
public LocalitySchedulingPlacementSet(AppSchedulingInfo info)
public Iterator<N> getPreferredNodeIterator(PlacementSet<N> clusterPlacementSet)
SchedulingPlacementSet
getPreferredNodeIterator
in interface SchedulingPlacementSet<N extends SchedulerNode>
clusterPlacementSet
- input cluster PlacementSetpublic ResourceRequestUpdateResult updateResourceRequests(Collection<org.apache.hadoop.yarn.api.records.ResourceRequest> requests, boolean recoverPreemptedRequestForAContainer)
SchedulingPlacementSet
updateResourceRequests
in interface SchedulingPlacementSet<N extends SchedulerNode>
requests
- new ResourceRequestsrecoverPreemptedRequestForAContainer
- if we're recovering resource
requests for preempted containerpublic Map<String,org.apache.hadoop.yarn.api.records.ResourceRequest> getResourceRequests()
SchedulingPlacementSet
getResourceRequests
in interface SchedulingPlacementSet<N extends SchedulerNode>
public PendingAsk getPendingAsk(String resourceName)
SchedulingPlacementSet
PendingAsk.ZERO
getPendingAsk
in interface SchedulingPlacementSet<N extends SchedulerNode>
resourceName
- resourceNamepublic int getOutstandingAsksCount(String resourceName)
SchedulingPlacementSet
getOutstandingAsksCount
in interface SchedulingPlacementSet<N extends SchedulerNode>
resourceName
- resourceNamepublic org.apache.hadoop.yarn.api.records.ResourceRequest cloneResourceRequest(org.apache.hadoop.yarn.api.records.ResourceRequest request)
public boolean canAllocate(NodeType type, SchedulerNode node)
SchedulingPlacementSet
canAllocate
in interface SchedulingPlacementSet<N extends SchedulerNode>
type
- Locality Typenode
- which node we will allocate onpublic boolean canDelayTo(String resourceName)
SchedulingPlacementSet
canDelayTo
in interface SchedulingPlacementSet<N extends SchedulerNode>
resourceName
- resourceNamepublic boolean acceptNodePartition(String nodePartition, SchedulingMode schedulingMode)
SchedulingPlacementSet
SchedulingPlacementSet
accept resources on nodePartition?acceptNodePartition
in interface SchedulingPlacementSet<N extends SchedulerNode>
nodePartition
- nodePartitionschedulingMode
- schedulingModepublic String getPrimaryRequestedNodePartition()
SchedulingPlacementSet
getPrimaryRequestedNodePartition
in interface SchedulingPlacementSet<N extends SchedulerNode>
public int getUniqueLocationAsks()
getUniqueLocationAsks
in interface SchedulingPlacementSet<N extends SchedulerNode>
public void showRequests()
SchedulingPlacementSet
showRequests
in interface SchedulingPlacementSet<N extends SchedulerNode>
public List<org.apache.hadoop.yarn.api.records.ResourceRequest> allocate(org.apache.hadoop.yarn.server.scheduler.SchedulerRequestKey schedulerKey, NodeType type, SchedulerNode node)
SchedulingPlacementSet
allocate
in interface SchedulingPlacementSet<N extends SchedulerNode>
schedulerKey
- SchedulerRequestKey for this ResourceRequesttype
- Type of the allocationnode
- Which node this container allocated onpublic Iterator<String> getAcceptedResouceNames()
SchedulingPlacementSet
getAcceptedResouceNames
in interface SchedulingPlacementSet<N extends SchedulerNode>
Copyright © 2020 Apache Software Foundation. All rights reserved.