Interface SlotManager
-
- All Superinterfaces:
AutoCloseable
- All Known Implementing Classes:
FineGrainedSlotManager
public interface SlotManager extends AutoCloseable
The slot manager is responsible for maintaining a view on all registered task manager slots, their allocation and all pending slot requests. Whenever a new slot is registered or an allocated slot is freed, then it tries to fulfill another pending slot request. Whenever there are not enough slots available the slot manager will notify the resource manager about it viaResourceAllocator.declareResourceNeeded(java.util.Collection<org.apache.flink.runtime.resourcemanager.slotmanager.ResourceDeclaration>)
.In order to free resources and avoid resource leaks, idling task managers (task managers whose slots are currently not used) and pending slot requests time out triggering their release and failure, respectively.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
SlotManager.RegistrationResult
The result of task manager registration.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
clearResourceRequirements(JobID jobId)
Notifies the slot manager that the resource requirements for the given job should be cleared.void
freeSlot(SlotID slotId, AllocationID allocationId)
Free the given slot from the given allocation.Collection<SlotInfo>
getAllocatedSlotsOf(InstanceID instanceID)
ResourceProfile
getFreeResource()
ResourceProfile
getFreeResourceOf(InstanceID instanceID)
int
getNumberFreeSlots()
int
getNumberFreeSlotsOf(InstanceID instanceId)
int
getNumberRegisteredSlots()
int
getNumberRegisteredSlotsOf(InstanceID instanceId)
ResourceProfile
getRegisteredResource()
ResourceProfile
getRegisteredResourceOf(InstanceID instanceID)
void
processResourceRequirements(ResourceRequirements resourceRequirements)
Notifies the slot manager about the resource requirements of a job.SlotManager.RegistrationResult
registerTaskManager(TaskExecutorConnection taskExecutorConnection, SlotReport initialSlotReport, ResourceProfile totalResourceProfile, ResourceProfile defaultSlotResourceProfile)
Registers a new task manager at the slot manager.boolean
reportSlotStatus(InstanceID instanceId, SlotReport slotReport)
Reports the current slot allocations for a task manager identified by the given instance id.void
setFailUnfulfillableRequest(boolean failUnfulfillableRequest)
void
start(ResourceManagerId newResourceManagerId, Executor newMainThreadExecutor, ResourceAllocator newResourceAllocator, ResourceEventListener resourceEventListener, BlockedTaskManagerChecker newBlockedTaskManagerChecker)
Starts the slot manager with the given leader id and resource manager actions.void
suspend()
Suspends the component.void
triggerResourceRequirementsCheck()
Trigger the resource requirement check.boolean
unregisterTaskManager(InstanceID instanceId, Exception cause)
Unregisters the task manager identified by the given instance id and its associated slots from the slot manager.-
Methods inherited from interface java.lang.AutoCloseable
close
-
-
-
-
Method Detail
-
getNumberRegisteredSlots
int getNumberRegisteredSlots()
-
getNumberRegisteredSlotsOf
int getNumberRegisteredSlotsOf(InstanceID instanceId)
-
getNumberFreeSlots
int getNumberFreeSlots()
-
getNumberFreeSlotsOf
int getNumberFreeSlotsOf(InstanceID instanceId)
-
getRegisteredResource
ResourceProfile getRegisteredResource()
-
getRegisteredResourceOf
ResourceProfile getRegisteredResourceOf(InstanceID instanceID)
-
getFreeResource
ResourceProfile getFreeResource()
-
getFreeResourceOf
ResourceProfile getFreeResourceOf(InstanceID instanceID)
-
getAllocatedSlotsOf
Collection<SlotInfo> getAllocatedSlotsOf(InstanceID instanceID)
-
start
void start(ResourceManagerId newResourceManagerId, Executor newMainThreadExecutor, ResourceAllocator newResourceAllocator, ResourceEventListener resourceEventListener, BlockedTaskManagerChecker newBlockedTaskManagerChecker)
Starts the slot manager with the given leader id and resource manager actions.- Parameters:
newResourceManagerId
- to use for communication with the task managersnewMainThreadExecutor
- to use to run code in the ResourceManager's main threadnewResourceAllocator
- to use for resource (de-)allocationsresourceEventListener
- to use for notify resource not enoughnewBlockedTaskManagerChecker
- to query whether a task manager is blocked
-
suspend
void suspend()
Suspends the component. This clears the internal state of the slot manager.
-
clearResourceRequirements
void clearResourceRequirements(JobID jobId)
Notifies the slot manager that the resource requirements for the given job should be cleared. The slot manager may assume that no further updates to the resource requirements will occur.- Parameters:
jobId
- job for which to clear the requirements
-
processResourceRequirements
void processResourceRequirements(ResourceRequirements resourceRequirements)
Notifies the slot manager about the resource requirements of a job.- Parameters:
resourceRequirements
- resource requirements of a job
-
registerTaskManager
SlotManager.RegistrationResult registerTaskManager(TaskExecutorConnection taskExecutorConnection, SlotReport initialSlotReport, ResourceProfile totalResourceProfile, ResourceProfile defaultSlotResourceProfile)
Registers a new task manager at the slot manager. This will make the task managers slots known and, thus, available for allocation.- Parameters:
taskExecutorConnection
- for the new task managerinitialSlotReport
- for the new task managertotalResourceProfile
- for the new task managerdefaultSlotResourceProfile
- for the new task manager- Returns:
- The result of task manager registration
-
unregisterTaskManager
boolean unregisterTaskManager(InstanceID instanceId, Exception cause)
Unregisters the task manager identified by the given instance id and its associated slots from the slot manager.- Parameters:
instanceId
- identifying the task manager to unregistercause
- for unregistering the TaskManager- Returns:
- True if there existed a registered task manager with the given instance id
-
reportSlotStatus
boolean reportSlotStatus(InstanceID instanceId, SlotReport slotReport)
Reports the current slot allocations for a task manager identified by the given instance id.- Parameters:
instanceId
- identifying the task manager for which to report the slot statusslotReport
- containing the status for all of its slots- Returns:
- true if the slot status has been updated successfully, otherwise false
-
freeSlot
void freeSlot(SlotID slotId, AllocationID allocationId)
Free the given slot from the given allocation. If the slot is still allocated by the given allocation id, then the slot will be marked as free and will be subject to new slot requests.- Parameters:
slotId
- identifying the slot to freeallocationId
- with which the slot is presumably allocated
-
setFailUnfulfillableRequest
void setFailUnfulfillableRequest(boolean failUnfulfillableRequest)
-
triggerResourceRequirementsCheck
void triggerResourceRequirementsCheck()
Trigger the resource requirement check. This method will be called when some slot statuses changed.
-
-