Search in sources :

Example 11 with NodeSelector

use of com.facebook.presto.execution.scheduler.nodeSelection.NodeSelector in project presto by prestodb.

the class TestNodeScheduler method testHardAffinityAssignment.

@Test
public void testHardAffinityAssignment() {
    NodeTaskMap nodeTaskMap = new NodeTaskMap(finalizerService);
    TestingTransactionHandle transactionHandle = TestingTransactionHandle.create();
    NodeSchedulerConfig nodeSchedulerConfig = new NodeSchedulerConfig().setMaxSplitsPerNode(20).setIncludeCoordinator(false).setMaxPendingSplitsPerTask(10);
    NodeScheduler nodeScheduler = new NodeScheduler(new LegacyNetworkTopology(), nodeManager, new NodeSelectionStats(), nodeSchedulerConfig, nodeTaskMap, new ThrowingNodeTtlFetcherManager(), new NoOpQueryManager(), new SimpleTtlNodeSelectorConfig());
    NodeSelector nodeSelector = nodeScheduler.createNodeSelector(session, CONNECTOR_ID, 3);
    Set<Split> splits = new HashSet<>();
    // Adding one more split (1 % 3 = 1), 1 splits will be distributed to 1 nodes
    splits.add(new Split(CONNECTOR_ID, transactionHandle, new TestHardAffinitySplitRemote()));
    splits.add(new Split(CONNECTOR_ID, transactionHandle, new TestHardAffinitySplitRemote()));
    splits.add(new Split(CONNECTOR_ID, transactionHandle, new TestHardAffinitySplitRemote()));
    SplitPlacementResult splitPlacementResult = nodeSelector.computeAssignments(splits, ImmutableList.of());
    for (Split split : splitPlacementResult.getAssignments().values()) {
        assertTrue(split.getSplitContext().isCacheable());
    }
}
Also used : NodeSchedulerConfig(com.facebook.presto.execution.scheduler.NodeSchedulerConfig) ThrowingNodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.ThrowingNodeTtlFetcherManager) NoOpQueryManager(com.facebook.presto.dispatcher.NoOpQueryManager) NodeSelectionStats(com.facebook.presto.execution.scheduler.nodeSelection.NodeSelectionStats) LegacyNetworkTopology(com.facebook.presto.execution.scheduler.LegacyNetworkTopology) NodeScheduler(com.facebook.presto.execution.scheduler.NodeScheduler) TestingTransactionHandle(com.facebook.presto.testing.TestingTransactionHandle) NodeSelector(com.facebook.presto.execution.scheduler.nodeSelection.NodeSelector) ConnectorSplit(com.facebook.presto.spi.ConnectorSplit) Split(com.facebook.presto.metadata.Split) SplitPlacementResult(com.facebook.presto.execution.scheduler.SplitPlacementResult) SimpleTtlNodeSelectorConfig(com.facebook.presto.execution.scheduler.nodeSelection.SimpleTtlNodeSelectorConfig) HashSet(java.util.HashSet) Test(org.testng.annotations.Test)

Aggregations

NodeSelector (com.facebook.presto.execution.scheduler.nodeSelection.NodeSelector)11 InternalNode (com.facebook.presto.metadata.InternalNode)10 NodeScheduler (com.facebook.presto.execution.scheduler.NodeScheduler)9 NodeSchedulerConfig (com.facebook.presto.execution.scheduler.NodeSchedulerConfig)9 NodeSelectionStats (com.facebook.presto.execution.scheduler.nodeSelection.NodeSelectionStats)9 SimpleTtlNodeSelectorConfig (com.facebook.presto.execution.scheduler.nodeSelection.SimpleTtlNodeSelectorConfig)9 Split (com.facebook.presto.metadata.Split)9 ConnectorSplit (com.facebook.presto.spi.ConnectorSplit)9 HashSet (java.util.HashSet)9 Test (org.testng.annotations.Test)9 NoOpQueryManager (com.facebook.presto.dispatcher.NoOpQueryManager)8 LegacyNetworkTopology (com.facebook.presto.execution.scheduler.LegacyNetworkTopology)8 TestingTransactionHandle (com.facebook.presto.testing.TestingTransactionHandle)8 ThrowingNodeTtlFetcherManager (com.facebook.presto.ttl.nodettlfetchermanagers.ThrowingNodeTtlFetcherManager)8 SplitPlacementResult (com.facebook.presto.execution.scheduler.SplitPlacementResult)7 NetworkLocationCache (com.facebook.presto.execution.scheduler.NetworkLocationCache)3 InMemoryNodeManager (com.facebook.presto.metadata.InMemoryNodeManager)3 Session (com.facebook.presto.Session)2 PlanNodeId (com.facebook.presto.spi.plan.PlanNodeId)2 ImmutableList (com.google.common.collect.ImmutableList)2