Search in sources :

Example 1 with NodeTtl

use of com.facebook.presto.spi.ttl.NodeTtl in project presto by prestodb.

the class TestPercentileBasedClusterTtlProvider method testWithNonEmptyTtlList.

@Test
public void testWithNonEmptyTtlList() {
    List<NodeTtl> nodeTtls = ImmutableList.of(new NodeTtl(ImmutableSet.of(new ConfidenceBasedTtlInfo(10, 100))), new NodeTtl(ImmutableSet.of(new ConfidenceBasedTtlInfo(30, 100))));
    assertEquals(clusterTtlProvider.getClusterTtl(nodeTtls), new ConfidenceBasedTtlInfo(10, 100));
}
Also used : ConfidenceBasedTtlInfo(com.facebook.presto.spi.ttl.ConfidenceBasedTtlInfo) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) Test(org.testng.annotations.Test)

Example 2 with NodeTtl

use of com.facebook.presto.spi.ttl.NodeTtl in project presto by prestodb.

the class SimpleTtlNodeSelector method getEligibleNodes.

private List<InternalNode> getEligibleNodes(int limit, NodeMap nodeMap, List<RemoteTask> existingTasks) {
    Map<InternalNode, NodeTtl> nodeTtlInfo = nodeTtlFetcherManager.getAllTtls();
    Map<InternalNode, Optional<ConfidenceBasedTtlInfo>> ttlInfo = nodeTtlInfo.entrySet().stream().collect(toImmutableMap(Map.Entry::getKey, e -> e.getValue().getTtlInfo().stream().min(Comparator.comparing(ConfidenceBasedTtlInfo::getExpiryInstant))));
    Duration estimatedExecutionTimeRemaining = getEstimatedExecutionTimeRemaining();
    // Of the nodes on which already have existing tasks, pick only those whose TTL is enough
    List<InternalNode> existingEligibleNodes = existingTasks.stream().map(remoteTask -> nodeMap.getActiveNodesByNodeId().get(remoteTask.getNodeId())).filter(Objects::nonNull).filter(ttlInfo::containsKey).filter(node -> ttlInfo.get(node).isPresent()).filter(node -> isTtlEnough(ttlInfo.get(node).get(), estimatedExecutionTimeRemaining)).collect(toList());
    int alreadySelectedNodeCount = existingEligibleNodes.size();
    List<InternalNode> activeNodes = nodeMap.getActiveNodes();
    List<InternalNode> newEligibleNodes = filterNodesByTtl(activeNodes, ImmutableSet.copyOf(existingEligibleNodes), ttlInfo, estimatedExecutionTimeRemaining);
    if (alreadySelectedNodeCount < limit && newEligibleNodes.size() > 0) {
        List<InternalNode> moreNodes = selectNodes(limit - alreadySelectedNodeCount, new ResettableRandomizedIterator<>(newEligibleNodes));
        existingEligibleNodes.addAll(moreNodes);
    }
    verify(existingEligibleNodes.stream().allMatch(Objects::nonNull), "existingNodes list must not contain any nulls");
    return existingEligibleNodes;
}
Also used : NodeTaskMap(com.facebook.presto.execution.NodeTaskMap) NodeScheduler.selectNodes(com.facebook.presto.execution.scheduler.NodeScheduler.selectNodes) Duration(io.airlift.units.Duration) Preconditions.checkArgument(com.google.common.base.Preconditions.checkArgument) SplitContext(com.facebook.presto.spi.SplitContext) BucketNodeMap(com.facebook.presto.execution.scheduler.BucketNodeMap) Map(java.util.Map) ConfidenceBasedTtlInfo(com.facebook.presto.spi.ttl.ConfidenceBasedTtlInfo) NODE_SELECTION_NOT_SUPPORTED(com.facebook.presto.spi.StandardErrorCode.NODE_SELECTION_NOT_SUPPORTED) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) Set(java.util.Set) NO_NODES_AVAILABLE(com.facebook.presto.spi.StandardErrorCode.NO_NODES_AVAILABLE) Instant(java.time.Instant) String.format(java.lang.String.format) Objects(java.util.Objects) List(java.util.List) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) NodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.NodeTtlFetcherManager) ResettableRandomizedIterator(com.facebook.presto.execution.scheduler.ResettableRandomizedIterator) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) Optional(java.util.Optional) NodeScheduler.calculateLowWatermark(com.facebook.presto.execution.scheduler.NodeScheduler.calculateLowWatermark) Logger(com.facebook.airlift.log.Logger) SplitPlacementResult(com.facebook.presto.execution.scheduler.SplitPlacementResult) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) InternalNodeInfo(com.facebook.presto.execution.scheduler.InternalNodeInfo) Supplier(com.google.common.base.Supplier) NodeMap(com.facebook.presto.execution.scheduler.NodeMap) QueryManager(com.facebook.presto.execution.QueryManager) PrestoException(com.facebook.presto.spi.PrestoException) OptionalInt(java.util.OptionalInt) AtomicReference(java.util.concurrent.atomic.AtomicReference) NodeScheduler.toWhenHasSplitQueueSpaceFuture(com.facebook.presto.execution.scheduler.NodeScheduler.toWhenHasSplitQueueSpaceFuture) Verify.verify(com.google.common.base.Verify.verify) Objects.requireNonNull(java.util.Objects.requireNonNull) Suppliers(com.google.common.base.Suppliers) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) SECONDS(java.time.temporal.ChronoUnit.SECONDS) Futures.immediateFuture(com.google.common.util.concurrent.Futures.immediateFuture) Session(com.facebook.presto.Session) NodeSelectionStrategy(com.facebook.presto.spi.schedule.NodeSelectionStrategy) NodeAssignmentStats(com.facebook.presto.execution.scheduler.NodeAssignmentStats) InternalNode(com.facebook.presto.metadata.InternalNode) TimeUnit(java.util.concurrent.TimeUnit) Collectors.toList(java.util.stream.Collectors.toList) RemoteTask(com.facebook.presto.execution.RemoteTask) Split(com.facebook.presto.metadata.Split) VisibleForTesting(com.google.common.annotations.VisibleForTesting) SplitWeight(com.facebook.presto.spi.SplitWeight) Comparator(java.util.Comparator) Optional(java.util.Optional) Objects(java.util.Objects) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) Duration(io.airlift.units.Duration) InternalNode(com.facebook.presto.metadata.InternalNode) NodeTaskMap(com.facebook.presto.execution.NodeTaskMap) BucketNodeMap(com.facebook.presto.execution.scheduler.BucketNodeMap) Map(java.util.Map) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) NodeMap(com.facebook.presto.execution.scheduler.NodeMap)

Example 3 with NodeTtl

use of com.facebook.presto.spi.ttl.NodeTtl in project presto by prestodb.

the class TestNodeScheduler method testTtlAwareScheduling.

@Test
public void testTtlAwareScheduling() {
    InMemoryNodeManager nodeManager = new InMemoryNodeManager();
    InternalNode node1 = new InternalNode("other1", URI.create("http://127.0.0.1:11"), NodeVersion.UNKNOWN, false);
    InternalNode node2 = new InternalNode("other2", URI.create("http://127.0.0.1:12"), NodeVersion.UNKNOWN, false);
    InternalNode node3 = new InternalNode("other3", URI.create("http://127.0.0.1:13"), NodeVersion.UNKNOWN, false);
    List<InternalNode> nodes = ImmutableList.of(node1, node2, node3);
    nodeManager.addNode(CONNECTOR_ID, nodes);
    NodeSchedulerConfig nodeSchedulerConfig = new NodeSchedulerConfig().setMaxSplitsPerNode(20).setIncludeCoordinator(false).setMaxPendingSplitsPerTask(10);
    Instant currentInstant = Instant.now();
    NodeTtl ttl1 = new NodeTtl(ImmutableSet.of(new ConfidenceBasedTtlInfo(currentInstant.plus(5, ChronoUnit.MINUTES).getEpochSecond(), 100)));
    NodeTtl ttl2 = new NodeTtl(ImmutableSet.of(new ConfidenceBasedTtlInfo(currentInstant.plus(30, ChronoUnit.MINUTES).getEpochSecond(), 100)));
    NodeTtl ttl3 = new NodeTtl(ImmutableSet.of(new ConfidenceBasedTtlInfo(currentInstant.plus(2, ChronoUnit.HOURS).getEpochSecond(), 100)));
    Map<NodeInfo, NodeTtl> nodeToTtl = ImmutableMap.of(new NodeInfo(node1.getNodeIdentifier(), node1.getHost()), ttl1, new NodeInfo(node2.getNodeIdentifier(), node2.getHost()), ttl2, new NodeInfo(node3.getNodeIdentifier(), node3.getHost()), ttl3);
    ConfidenceBasedNodeTtlFetcherManager nodeTtlFetcherManager = new ConfidenceBasedNodeTtlFetcherManager(nodeManager, new NodeSchedulerConfig(), new NodeTtlFetcherManagerConfig());
    NodeTtlFetcherFactory nodeTtlFetcherFactory = new TestingNodeTtlFetcherFactory(nodeToTtl);
    nodeTtlFetcherManager.addNodeTtlFetcherFactory(nodeTtlFetcherFactory);
    nodeTtlFetcherManager.load(nodeTtlFetcherFactory.getName(), ImmutableMap.of());
    nodeTtlFetcherManager.refreshTtlInfo();
    TestingQueryManager queryManager = new TestingQueryManager();
    NodeScheduler nodeScheduler = new NodeScheduler(new LegacyNetworkTopology(), nodeManager, new NodeSelectionStats(), nodeSchedulerConfig, nodeTaskMap, nodeTtlFetcherManager, queryManager, new SimpleTtlNodeSelectorConfig());
    // Query is estimated to take 20 mins and has been executing for 3 mins, i.e, 17 mins left
    // So only node2 and node3 have enough TTL to run additional work
    Session session = sessionWithTtlAwareSchedulingStrategyAndEstimatedExecutionTime(new Duration(20, TimeUnit.MINUTES));
    NodeSelector nodeSelector = nodeScheduler.createNodeSelector(session, CONNECTOR_ID);
    queryManager.setExecutionTime(new Duration(3, TimeUnit.MINUTES));
    assertEquals(ImmutableSet.copyOf(nodeSelector.selectRandomNodes(3)), ImmutableSet.of(node2, node3));
    // Query is estimated to take 1 hour and has been executing for 45 mins, i.e, 15 mins left
    // So only node2 and node3 have enough TTL to work on new splits
    session = sessionWithTtlAwareSchedulingStrategyAndEstimatedExecutionTime(new Duration(1, TimeUnit.HOURS));
    nodeSelector = nodeScheduler.createNodeSelector(session, CONNECTOR_ID);
    queryManager.setExecutionTime(new Duration(45, TimeUnit.MINUTES));
    Set<Split> splits = new HashSet<>();
    for (int i = 0; i < 2; i++) {
        splits.add(new Split(CONNECTOR_ID, TestingTransactionHandle.create(), new TestSplitRemote()));
    }
    Multimap<InternalNode, Split> assignments = nodeSelector.computeAssignments(splits, ImmutableList.copyOf(taskMap.values())).getAssignments();
    assertEquals(assignments.size(), 2);
    assertTrue(assignments.keySet().contains(node2));
    assertTrue(assignments.keySet().contains(node3));
    // Query is estimated to take 1 hour and has been executing for 20 mins, i.e, 40 mins left
    // So only node3 has enough TTL to work on new splits
    MockRemoteTaskFactory remoteTaskFactory = new MockRemoteTaskFactory(remoteTaskExecutor, remoteTaskScheduledExecutor);
    TaskId taskId = new TaskId("test", 1, 0, 1);
    RemoteTask newRemoteTask = remoteTaskFactory.createTableScanTask(taskId, node2, ImmutableList.of(), nodeTaskMap.createTaskStatsTracker(node2, taskId));
    taskMap.put(node2, newRemoteTask);
    nodeTaskMap.addTask(node2, newRemoteTask);
    session = sessionWithTtlAwareSchedulingStrategyAndEstimatedExecutionTime(new Duration(1, TimeUnit.HOURS));
    nodeSelector = nodeScheduler.createNodeSelector(session, CONNECTOR_ID);
    queryManager.setExecutionTime(new Duration(20, TimeUnit.MINUTES));
    splits.clear();
    for (int i = 0; i < 2; i++) {
        splits.add(new Split(CONNECTOR_ID, TestingTransactionHandle.create(), new TestSplitRemote()));
    }
    assignments = nodeSelector.computeAssignments(splits, ImmutableList.copyOf(taskMap.values())).getAssignments();
    assertEquals(assignments.size(), 2);
    assertEquals(assignments.keySet().size(), 1);
    assertTrue(assignments.keySet().contains(node3));
}
Also used : NodeSchedulerConfig(com.facebook.presto.execution.scheduler.NodeSchedulerConfig) NodeScheduler(com.facebook.presto.execution.scheduler.NodeScheduler) TestingNodeTtlFetcherFactory(com.facebook.presto.spi.ttl.TestingNodeTtlFetcherFactory) SimpleTtlNodeSelectorConfig(com.facebook.presto.execution.scheduler.nodeSelection.SimpleTtlNodeSelectorConfig) HashSet(java.util.HashSet) NodeTtlFetcherFactory(com.facebook.presto.spi.ttl.NodeTtlFetcherFactory) TestingNodeTtlFetcherFactory(com.facebook.presto.spi.ttl.TestingNodeTtlFetcherFactory) ConfidenceBasedNodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.ConfidenceBasedNodeTtlFetcherManager) ConfidenceBasedTtlInfo(com.facebook.presto.spi.ttl.ConfidenceBasedTtlInfo) Instant(java.time.Instant) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) Duration(io.airlift.units.Duration) InMemoryNodeManager(com.facebook.presto.metadata.InMemoryNodeManager) NodeTtlFetcherManagerConfig(com.facebook.presto.ttl.nodettlfetchermanagers.NodeTtlFetcherManagerConfig) NodeSelectionStats(com.facebook.presto.execution.scheduler.nodeSelection.NodeSelectionStats) NodeInfo(com.facebook.presto.spi.ttl.NodeInfo) LegacyNetworkTopology(com.facebook.presto.execution.scheduler.LegacyNetworkTopology) InternalNode(com.facebook.presto.metadata.InternalNode) NodeSelector(com.facebook.presto.execution.scheduler.nodeSelection.NodeSelector) ConnectorSplit(com.facebook.presto.spi.ConnectorSplit) Split(com.facebook.presto.metadata.Split) TestingSession(com.facebook.presto.testing.TestingSession) Session(com.facebook.presto.Session) Test(org.testng.annotations.Test)

Example 4 with NodeTtl

use of com.facebook.presto.spi.ttl.NodeTtl in project presto by prestodb.

the class SimpleTtlNodeSelector method selectRandomNodes.

@Override
public List<InternalNode> selectRandomNodes(int limit, Set<InternalNode> excludedNodes) {
    Map<InternalNode, NodeTtl> nodeTtlInfo = nodeTtlFetcherManager.getAllTtls();
    Map<InternalNode, Optional<ConfidenceBasedTtlInfo>> ttlInfo = nodeTtlInfo.entrySet().stream().collect(toImmutableMap(Map.Entry::getKey, e -> e.getValue().getTtlInfo().stream().min(Comparator.comparing(ConfidenceBasedTtlInfo::getExpiryInstant))));
    NodeMap nodeMap = this.nodeMap.get().get();
    List<InternalNode> activeNodes = nodeMap.getActiveNodes();
    Duration estimatedExecutionTimeRemaining = getEstimatedExecutionTimeRemaining();
    List<InternalNode> eligibleNodes = filterNodesByTtl(activeNodes, excludedNodes, ttlInfo, estimatedExecutionTimeRemaining);
    return selectNodes(limit, new ResettableRandomizedIterator<>(eligibleNodes));
}
Also used : NodeTaskMap(com.facebook.presto.execution.NodeTaskMap) NodeScheduler.selectNodes(com.facebook.presto.execution.scheduler.NodeScheduler.selectNodes) Duration(io.airlift.units.Duration) Preconditions.checkArgument(com.google.common.base.Preconditions.checkArgument) SplitContext(com.facebook.presto.spi.SplitContext) BucketNodeMap(com.facebook.presto.execution.scheduler.BucketNodeMap) Map(java.util.Map) ConfidenceBasedTtlInfo(com.facebook.presto.spi.ttl.ConfidenceBasedTtlInfo) NODE_SELECTION_NOT_SUPPORTED(com.facebook.presto.spi.StandardErrorCode.NODE_SELECTION_NOT_SUPPORTED) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) Set(java.util.Set) NO_NODES_AVAILABLE(com.facebook.presto.spi.StandardErrorCode.NO_NODES_AVAILABLE) Instant(java.time.Instant) String.format(java.lang.String.format) Objects(java.util.Objects) List(java.util.List) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) NodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.NodeTtlFetcherManager) ResettableRandomizedIterator(com.facebook.presto.execution.scheduler.ResettableRandomizedIterator) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) Optional(java.util.Optional) NodeScheduler.calculateLowWatermark(com.facebook.presto.execution.scheduler.NodeScheduler.calculateLowWatermark) Logger(com.facebook.airlift.log.Logger) SplitPlacementResult(com.facebook.presto.execution.scheduler.SplitPlacementResult) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) InternalNodeInfo(com.facebook.presto.execution.scheduler.InternalNodeInfo) Supplier(com.google.common.base.Supplier) NodeMap(com.facebook.presto.execution.scheduler.NodeMap) QueryManager(com.facebook.presto.execution.QueryManager) PrestoException(com.facebook.presto.spi.PrestoException) OptionalInt(java.util.OptionalInt) AtomicReference(java.util.concurrent.atomic.AtomicReference) NodeScheduler.toWhenHasSplitQueueSpaceFuture(com.facebook.presto.execution.scheduler.NodeScheduler.toWhenHasSplitQueueSpaceFuture) Verify.verify(com.google.common.base.Verify.verify) Objects.requireNonNull(java.util.Objects.requireNonNull) Suppliers(com.google.common.base.Suppliers) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) SECONDS(java.time.temporal.ChronoUnit.SECONDS) Futures.immediateFuture(com.google.common.util.concurrent.Futures.immediateFuture) Session(com.facebook.presto.Session) NodeSelectionStrategy(com.facebook.presto.spi.schedule.NodeSelectionStrategy) NodeAssignmentStats(com.facebook.presto.execution.scheduler.NodeAssignmentStats) InternalNode(com.facebook.presto.metadata.InternalNode) TimeUnit(java.util.concurrent.TimeUnit) Collectors.toList(java.util.stream.Collectors.toList) RemoteTask(com.facebook.presto.execution.RemoteTask) Split(com.facebook.presto.metadata.Split) VisibleForTesting(com.google.common.annotations.VisibleForTesting) SplitWeight(com.facebook.presto.spi.SplitWeight) Comparator(java.util.Comparator) Optional(java.util.Optional) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) BucketNodeMap(com.facebook.presto.execution.scheduler.BucketNodeMap) NodeMap(com.facebook.presto.execution.scheduler.NodeMap) Duration(io.airlift.units.Duration) InternalNode(com.facebook.presto.metadata.InternalNode) NodeTaskMap(com.facebook.presto.execution.NodeTaskMap) BucketNodeMap(com.facebook.presto.execution.scheduler.BucketNodeMap) Map(java.util.Map) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) NodeMap(com.facebook.presto.execution.scheduler.NodeMap)

Example 5 with NodeTtl

use of com.facebook.presto.spi.ttl.NodeTtl in project presto by prestodb.

the class ConfidenceBasedNodeTtlFetcherManager method getStaleTtlWorkerCount.

@Managed
public long getStaleTtlWorkerCount() {
    Duration staleDuration = nodeTtlFetcherManagerConfig.getStaleTtlThreshold();
    Instant staleInstant = Instant.now().minus(staleDuration.toMillis(), ChronoUnit.MILLIS);
    return nodeTtlMap.values().stream().filter(nodeTtl -> nodeTtl.getTtlPredictionInstant().isBefore(staleInstant)).count();
}
Also used : NodeSchedulerConfig(com.facebook.presto.execution.scheduler.NodeSchedulerConfig) Nested(org.weakref.jmx.Nested) Logger(com.facebook.airlift.log.Logger) System.currentTimeMillis(java.lang.System.currentTimeMillis) PeriodicTaskExecutor(com.facebook.presto.util.PeriodicTaskExecutor) CounterStat(com.facebook.airlift.stats.CounterStat) Strings.isNullOrEmpty(com.google.common.base.Strings.isNullOrEmpty) HashMap(java.util.HashMap) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) Duration(io.airlift.units.Duration) Inject(javax.inject.Inject) PreDestroy(javax.annotation.PreDestroy) Preconditions.checkArgument(com.google.common.base.Preconditions.checkArgument) Sets.difference(com.google.common.collect.Sets.difference) Executors.newSingleThreadScheduledExecutor(java.util.concurrent.Executors.newSingleThreadScheduledExecutor) InternalNodeManager(com.facebook.presto.metadata.InternalNodeManager) Managed(org.weakref.jmx.Managed) Math.round(java.lang.Math.round) Map(java.util.Map) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) Objects.requireNonNull(java.util.Objects.requireNonNull) PropertiesUtil.loadProperties(com.facebook.presto.util.PropertiesUtil.loadProperties) ImmutableSet(com.google.common.collect.ImmutableSet) NodeTtlFetcherFactory(com.facebook.presto.spi.ttl.NodeTtlFetcherFactory) NodeTtlFetcher(com.facebook.presto.spi.ttl.NodeTtlFetcher) ImmutableMap(com.google.common.collect.ImmutableMap) Threads.threadsNamed(com.facebook.airlift.concurrent.Threads.threadsNamed) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) Instant(java.time.Instant) AllNodes(com.facebook.presto.metadata.AllNodes) Sets(com.google.common.collect.Sets) File(java.io.File) String.format(java.lang.String.format) Preconditions.checkState(com.google.common.base.Preconditions.checkState) InternalNode(com.facebook.presto.metadata.InternalNode) NodeInfo(com.facebook.presto.spi.ttl.NodeInfo) Consumer(java.util.function.Consumer) AtomicLong(java.util.concurrent.atomic.AtomicLong) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) ChronoUnit(java.time.temporal.ChronoUnit) NodeTtl(com.facebook.presto.spi.ttl.NodeTtl) Optional(java.util.Optional) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Instant(java.time.Instant) Duration(io.airlift.units.Duration) Managed(org.weakref.jmx.Managed)

Aggregations

NodeTtl (com.facebook.presto.spi.ttl.NodeTtl)5 InternalNode (com.facebook.presto.metadata.InternalNode)4 ConfidenceBasedTtlInfo (com.facebook.presto.spi.ttl.ConfidenceBasedTtlInfo)4 Duration (io.airlift.units.Duration)4 Instant (java.time.Instant)4 Logger (com.facebook.airlift.log.Logger)3 Session (com.facebook.presto.Session)3 Split (com.facebook.presto.metadata.Split)3 VisibleForTesting (com.google.common.annotations.VisibleForTesting)3 Preconditions.checkArgument (com.google.common.base.Preconditions.checkArgument)3 ImmutableMap.toImmutableMap (com.google.common.collect.ImmutableMap.toImmutableMap)3 ImmutableSet (com.google.common.collect.ImmutableSet)3 String.format (java.lang.String.format)3 NodeTaskMap (com.facebook.presto.execution.NodeTaskMap)2 QueryManager (com.facebook.presto.execution.QueryManager)2 RemoteTask (com.facebook.presto.execution.RemoteTask)2 BucketNodeMap (com.facebook.presto.execution.scheduler.BucketNodeMap)2 InternalNodeInfo (com.facebook.presto.execution.scheduler.InternalNodeInfo)2 NodeAssignmentStats (com.facebook.presto.execution.scheduler.NodeAssignmentStats)2 NodeMap (com.facebook.presto.execution.scheduler.NodeMap)2