java.lang.Object
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.allocator.AbstractContainerAllocator
Direct Known Subclasses:
ContainerAllocator, RegularContainerAllocator

public abstract class AbstractContainerAllocator extends Object
For an application, resource limits and resource requests, decide how to allocate container. This is to make application resource allocation logic extensible.
  • Constructor Details

    • AbstractContainerAllocator

      public AbstractContainerAllocator(FiCaSchedulerApp application, org.apache.hadoop.yarn.util.resource.ResourceCalculator rc, RMContext rmContext)
    • AbstractContainerAllocator

      public AbstractContainerAllocator(FiCaSchedulerApp application, org.apache.hadoop.yarn.util.resource.ResourceCalculator rc, RMContext rmContext, ActivitiesManager activitiesManager)
  • Method Details

    • getCSAssignmentFromAllocateResult

      protected CSAssignment getCSAssignmentFromAllocateResult(org.apache.hadoop.yarn.api.records.Resource clusterResource, ContainerAllocation result, RMContainer rmContainer, FiCaSchedulerNode node)
    • assignContainers

      public abstract CSAssignment assignContainers(org.apache.hadoop.yarn.api.records.Resource clusterResource, CandidateNodeSet<FiCaSchedulerNode> candidates, SchedulingMode schedulingMode, ResourceLimits resourceLimits, RMContainer reservedContainer)
      allocate needs to handle following stuffs:
      • Select request: Select a request to allocate. E.g. select a resource request based on requirement/priority/locality.
      • Check if a given resource can be allocated based on resource availability
      • Do allocation: this will decide/create allocated/reserved container, this will also update metrics
      Parameters:
      clusterResource - clusterResource
      candidates - CandidateNodeSet
      schedulingMode - scheduling mode (exclusive or nonexclusive)
      resourceLimits - resourceLimits
      reservedContainer - reservedContainer
      Returns:
      CSAssignment proposal