java.lang.Object
org.apache.hadoop.yarn.server.resourcemanager.reservation.planning.PlanningAlgorithm
All Implemented Interfaces:
ReservationAgent
Direct Known Subclasses:
IterativePlanner

public abstract class PlanningAlgorithm extends Object implements ReservationAgent
An abstract class that follows the general behavior of planning algorithms.
  • Constructor Details

    • PlanningAlgorithm

      public PlanningAlgorithm()
  • Method Details

    • allocateUser

      protected boolean allocateUser(org.apache.hadoop.yarn.api.records.ReservationId reservationId, String user, Plan plan, org.apache.hadoop.yarn.api.records.ReservationDefinition contract, ReservationAllocation oldReservation) throws PlanningException, ContractValidationException
      Performs the actual allocation for a ReservationDefinition within a Plan.
      Parameters:
      reservationId - the identifier of the reservation
      user - the user who owns the reservation
      plan - the Plan to which the reservation must be fitted
      contract - encapsulates the resources required by the user for his session
      oldReservation - the existing reservation (null if none)
      Returns:
      whether the allocateUser function was successful or not
      Throws:
      PlanningException - if the session cannot be fitted into the plan
      ContractValidationException - if validation fails
    • computeJobAllocation

      public abstract RLESparseResourceAllocation computeJobAllocation(Plan plan, org.apache.hadoop.yarn.api.records.ReservationId reservationId, org.apache.hadoop.yarn.api.records.ReservationDefinition reservation, String user) throws PlanningException, ContractValidationException
      Throws:
      PlanningException
      ContractValidationException
    • createReservation

      public boolean createReservation(org.apache.hadoop.yarn.api.records.ReservationId reservationId, String user, Plan plan, org.apache.hadoop.yarn.api.records.ReservationDefinition contract) throws PlanningException
      Description copied from interface: ReservationAgent
      Create a reservation for the user that abides by the specified contract
      Specified by:
      createReservation in interface ReservationAgent
      Parameters:
      reservationId - the identifier of the reservation to be created.
      user - the user who wants to create the reservation
      plan - the Plan to which the reservation must be fitted
      contract - encapsulates the resources the user requires for his session
      Returns:
      whether the create operation was successful or not
      Throws:
      PlanningException - if the session cannot be fitted into the plan
    • updateReservation

      public boolean updateReservation(org.apache.hadoop.yarn.api.records.ReservationId reservationId, String user, Plan plan, org.apache.hadoop.yarn.api.records.ReservationDefinition contract) throws PlanningException
      Description copied from interface: ReservationAgent
      Update a reservation for the user that abides by the specified contract
      Specified by:
      updateReservation in interface ReservationAgent
      Parameters:
      reservationId - the identifier of the reservation to be updated
      user - the user who wants to create the session
      plan - the Plan to which the reservation must be fitted
      contract - encapsulates the resources the user requires for his reservation
      Returns:
      whether the update operation was successful or not
      Throws:
      PlanningException - if the reservation cannot be fitted into the plan
    • deleteReservation

      public boolean deleteReservation(org.apache.hadoop.yarn.api.records.ReservationId reservationId, String user, Plan plan) throws PlanningException
      Description copied from interface: ReservationAgent
      Delete an user reservation
      Specified by:
      deleteReservation in interface ReservationAgent
      Parameters:
      reservationId - the identifier of the reservation to be deleted
      user - the user who wants to create the reservation
      plan - the Plan to which the session must be fitted
      Returns:
      whether the delete operation was successful or not
      Throws:
      PlanningException - if the reservation cannot be fitted into the plan
    • findEarliestTime

      protected static long findEarliestTime(Map<ReservationInterval,org.apache.hadoop.yarn.api.records.Resource> sesInt)
    • findLatestTime

      protected static long findLatestTime(Map<ReservationInterval,org.apache.hadoop.yarn.api.records.Resource> sesInt)
    • stepRoundDown

      protected static long stepRoundDown(long t, long step)
    • stepRoundUp

      protected static long stepRoundUp(long t, long step)
    • init

      public void init(org.apache.hadoop.conf.Configuration conf)
      Description copied from interface: ReservationAgent
      Init configuration.
      Specified by:
      init in interface ReservationAgent
      Parameters:
      conf - Configuration