@InterfaceAudience.LimitedPrivate(value="yarn") @InterfaceStability.Evolving public class CapacityScheduler extends AbstractYarnScheduler<FiCaSchedulerApp,FiCaSchedulerNode> implements PreemptableResourceScheduler, CapacitySchedulerContext, org.apache.hadoop.conf.Configurable
| Modifier and Type | Field and Description |
|---|---|
static String |
ROOT_QUEUE |
protected long |
THREAD_JOIN_TIMEOUT_MS |
applications, clusterResource, EMPTY_ALLOCATION, EMPTY_CONTAINER_LIST, maximumAllocation, minimumAllocation, nodes, rmContext| Constructor and Description |
|---|
CapacityScheduler() |
| Modifier and Type | Method and Description |
|---|---|
Allocation |
allocate(org.apache.hadoop.yarn.api.records.ApplicationAttemptId applicationAttemptId,
List<org.apache.hadoop.yarn.api.records.ResourceRequest> ask,
List<org.apache.hadoop.yarn.api.records.ContainerId> release,
List<String> blacklistAdditions,
List<String> blacklistRemovals)
The main api between the ApplicationMaster and the Scheduler.
|
boolean |
checkAccess(org.apache.hadoop.security.UserGroupInformation callerUGI,
org.apache.hadoop.yarn.api.records.QueueACL acl,
String queueName)
Check if the user has permission to perform the operation.
|
void |
dropContainerReservation(RMContainer container)
If the scheduler support container reservations, this method is used to
ask the scheduler to drop the reservation for the given container.
|
FiCaSchedulerApp |
getApplicationAttempt(org.apache.hadoop.yarn.api.records.ApplicationAttemptId applicationAttemptId) |
Comparator<FiCaSchedulerApp> |
getApplicationComparator() |
List<org.apache.hadoop.yarn.api.records.ApplicationAttemptId> |
getAppsInQueue(String queueName)
Gets the apps under a given queue
|
org.apache.hadoop.conf.Configuration |
getConf()
Get the yarn configuration.
|
CapacitySchedulerConfiguration |
getConfiguration() |
RMContainerTokenSecretManager |
getContainerTokenSecretManager() |
int |
getNumClusterNodes()
Get the number of nodes available in the cluster.
|
Comparator<CSQueue> |
getQueueComparator() |
org.apache.hadoop.yarn.api.records.QueueInfo |
getQueueInfo(String queueName,
boolean includeChildQueues,
boolean recursive)
Get queue information
|
List<org.apache.hadoop.yarn.api.records.QueueUserACLInfo> |
getQueueUserAclInfo()
Get acls for queues for current user.
|
org.apache.hadoop.yarn.util.resource.ResourceCalculator |
getResourceCalculator() |
RMContext |
getRMContext() |
CSQueue |
getRootQueue() |
QueueMetrics |
getRootQueueMetrics()
Get the root queue for the scheduler.
|
void |
handle(SchedulerEvent event) |
void |
killContainer(RMContainer cont)
Ask the scheduler to forcibly interrupt the container given as input
|
void |
preemptContainer(org.apache.hadoop.yarn.api.records.ApplicationAttemptId aid,
RMContainer cont)
Ask the scheduler to obtain back the container from a specific application
by issuing a preemption request
|
void |
recover(RMStateStore.RMState state) |
void |
reinitialize(org.apache.hadoop.conf.Configuration conf,
RMContext rmContext)
Re-initialize the
ResourceScheduler. |
void |
serviceInit(org.apache.hadoop.conf.Configuration conf) |
void |
serviceStart() |
void |
serviceStop() |
void |
setConf(org.apache.hadoop.conf.Configuration conf) |
void |
setRMContext(RMContext rmContext)
Set RMContext for
ResourceScheduler. |
getAppResourceUsageReport, getClusterResource, getCurrentAttemptForContainer, getMaximumResourceCapability, getMinimumResourceCapability, getNodeReport, getRMContainer, getSchedulerAppInfo, getSchedulerApplications, getSchedulerNode, getTransferredContainers, moveApplication, recoverContainersOnNode, recoverResourceRequestForContainerclose, getBlockers, getConfig, getFailureCause, getFailureState, getLifecycleHistory, getName, getServiceState, getStartTime, init, isInState, noteFailure, putBlocker, registerGlobalListener, registerServiceListener, removeBlocker, setConfig, start, stop, toString, unregisterGlobalListener, unregisterServiceListener, waitForServiceToStopclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetAppResourceUsageReport, getClusterResource, getMaximumResourceCapability, getMinimumResourceCapability, getNodeReport, getRMContainer, getSchedulerAppInfo, moveApplicationgetClusterResource, getMaximumResourceCapability, getMinimumResourceCapabilityprotected final long THREAD_JOIN_TIMEOUT_MS
@InterfaceAudience.Private public static final String ROOT_QUEUE
public void setConf(org.apache.hadoop.conf.Configuration conf)
setConf in interface org.apache.hadoop.conf.Configurablepublic org.apache.hadoop.conf.Configuration getConf()
CapacitySchedulerContextgetConf in interface org.apache.hadoop.conf.ConfigurablegetConf in interface CapacitySchedulerContextpublic QueueMetrics getRootQueueMetrics()
YarnSchedulergetRootQueueMetrics in interface YarnSchedulerpublic CSQueue getRootQueue()
public CapacitySchedulerConfiguration getConfiguration()
getConfiguration in interface CapacitySchedulerContextpublic RMContainerTokenSecretManager getContainerTokenSecretManager()
getContainerTokenSecretManager in interface CapacitySchedulerContextpublic Comparator<FiCaSchedulerApp> getApplicationComparator()
getApplicationComparator in interface CapacitySchedulerContextpublic org.apache.hadoop.yarn.util.resource.ResourceCalculator getResourceCalculator()
getResourceCalculator in interface CapacitySchedulerContextpublic Comparator<CSQueue> getQueueComparator()
getQueueComparator in interface CapacitySchedulerContextpublic int getNumClusterNodes()
YarnSchedulergetNumClusterNodes in interface CapacitySchedulerContextgetNumClusterNodes in interface YarnSchedulerpublic RMContext getRMContext()
getRMContext in interface CapacitySchedulerContextpublic void setRMContext(RMContext rmContext)
ResourceSchedulerResourceScheduler.
This method should be called immediately after instantiating
a scheduler once.setRMContext in interface ResourceSchedulerrmContext - created by ResourceManagerpublic void serviceInit(org.apache.hadoop.conf.Configuration conf)
throws Exception
serviceInit in class org.apache.hadoop.service.AbstractServiceExceptionpublic void serviceStart()
throws Exception
serviceStart in class org.apache.hadoop.service.AbstractServiceExceptionpublic void serviceStop()
throws Exception
serviceStop in class org.apache.hadoop.service.AbstractServiceExceptionpublic void reinitialize(org.apache.hadoop.conf.Configuration conf,
RMContext rmContext)
throws IOException
ResourceSchedulerResourceScheduler.reinitialize in interface ResourceSchedulerconf - configurationIOException@Lock(value=org.apache.hadoop.yarn.server.utils.Lock.NoLock.class) public Allocation allocate(org.apache.hadoop.yarn.api.records.ApplicationAttemptId applicationAttemptId, List<org.apache.hadoop.yarn.api.records.ResourceRequest> ask, List<org.apache.hadoop.yarn.api.records.ContainerId> release, List<String> blacklistAdditions, List<String> blacklistRemovals)
YarnSchedulerallocate in interface YarnSchedulerAllocation for the application@Lock(value=org.apache.hadoop.yarn.server.utils.Lock.NoLock.class) public org.apache.hadoop.yarn.api.records.QueueInfo getQueueInfo(String queueName, boolean includeChildQueues, boolean recursive) throws IOException
YarnSchedulergetQueueInfo in interface YarnSchedulerqueueName - queue nameincludeChildQueues - include child queues?recursive - get children queues?IOException@Lock(value=org.apache.hadoop.yarn.server.utils.Lock.NoLock.class) public List<org.apache.hadoop.yarn.api.records.QueueUserACLInfo> getQueueUserAclInfo()
YarnSchedulergetQueueUserAclInfo in interface YarnSchedulerpublic void handle(SchedulerEvent event)
handle in interface org.apache.hadoop.yarn.event.EventHandler<SchedulerEvent>@Lock(value=org.apache.hadoop.yarn.server.utils.Lock.NoLock.class) public FiCaSchedulerApp getApplicationAttempt(org.apache.hadoop.yarn.api.records.ApplicationAttemptId applicationAttemptId)
getApplicationAttempt in class AbstractYarnScheduler<FiCaSchedulerApp,FiCaSchedulerNode>@Lock(value=org.apache.hadoop.yarn.server.utils.Lock.NoLock.class) public void recover(RMStateStore.RMState state) throws Exception
recover in interface RecoverableExceptionpublic void dropContainerReservation(RMContainer container)
PreemptableResourceSchedulerdropContainerReservation in interface PreemptableResourceSchedulercontainer - Reference to reserved container allocation.public void preemptContainer(org.apache.hadoop.yarn.api.records.ApplicationAttemptId aid,
RMContainer cont)
PreemptableResourceSchedulerpreemptContainer in interface PreemptableResourceScheduleraid - the application from which we want to get a container backcont - the container we want backpublic void killContainer(RMContainer cont)
PreemptableResourceSchedulerkillContainer in interface PreemptableResourceSchedulerpublic boolean checkAccess(org.apache.hadoop.security.UserGroupInformation callerUGI,
org.apache.hadoop.yarn.api.records.QueueACL acl,
String queueName)
YarnSchedulerQueueACL.ADMINISTER_QUEUE permission,
this user can view/modify the applications in this queuecheckAccess in interface YarnSchedulertrue if the user has the permission,
false otherwisepublic List<org.apache.hadoop.yarn.api.records.ApplicationAttemptId> getAppsInQueue(String queueName)
YarnSchedulergetAppsInQueue in interface YarnSchedulerqueueName - the name of the queue.Copyright © 2014 Apache Software Foundation. All Rights Reserved.