Class TopologyAwareNodeSelector

java.lang.Object
io.trino.execution.scheduler.TopologyAwareNodeSelector
All Implemented Interfaces:
NodeSelector

public class TopologyAwareNodeSelector extends Object implements NodeSelector
  • Constructor Details

    • TopologyAwareNodeSelector

      public TopologyAwareNodeSelector(InternalNodeManager nodeManager, NodeTaskMap nodeTaskMap, boolean includeCoordinator, Supplier<NodeMap> nodeMap, int minCandidates, long maxSplitsWeightPerNode, long maxPendingSplitsWeightPerTask, int maxUnacknowledgedSplitsPerTask, List<io.airlift.stats.CounterStat> topologicalSplitCounters, NetworkTopology networkTopology)
  • Method Details

    • lockDownNodes

      public void lockDownNodes()
      Specified by:
      lockDownNodes in interface NodeSelector
    • allNodes

      public List<InternalNode> allNodes()
      Specified by:
      allNodes in interface NodeSelector
    • selectCurrentNode

      public InternalNode selectCurrentNode()
      Specified by:
      selectCurrentNode in interface NodeSelector
    • selectRandomNodes

      public List<InternalNode> selectRandomNodes(int limit, Set<InternalNode> excludedNodes)
      Specified by:
      selectRandomNodes in interface NodeSelector
    • computeAssignments

      public SplitPlacementResult computeAssignments(Set<Split> splits, List<RemoteTask> existingTasks)
      Description copied from interface: NodeSelector
      Identifies the nodes for running the specified splits.
      Specified by:
      computeAssignments in interface NodeSelector
      Parameters:
      splits - the splits that need to be assigned to nodes
      Returns:
      a multimap from node to splits only for splits for which we could identify a node to schedule on. If we cannot find an assignment for a split, it is not included in the map. Also returns a future indicating when to reattempt scheduling of this batch of splits, if some of them could not be scheduled.
    • computeAssignments

      public SplitPlacementResult computeAssignments(Set<Split> splits, List<RemoteTask> existingTasks, BucketNodeMap bucketNodeMap)
      Description copied from interface: NodeSelector
      Identifies the nodes for running the specified splits based on a precomputed fixed partitioning.
      Specified by:
      computeAssignments in interface NodeSelector
      Parameters:
      splits - the splits that need to be assigned to nodes
      Returns:
      a multimap from node to splits only for splits for which we could identify a node with free space. If we cannot find an assignment for a split, it is not included in the map. Also returns a future indicating when to reattempt scheduling of this batch of splits, if some of them could not be scheduled.