Search in sources :

Example 1 with SlotSelectionStrategy

use of org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy in project flink by apache.

the class AdaptiveBatchSchedulerFactory method createInstance.

@Override
public SchedulerNG createInstance(Logger log, JobGraph jobGraph, Executor ioExecutor, Configuration jobMasterConfiguration, SlotPoolService slotPoolService, ScheduledExecutorService futureExecutor, ClassLoader userCodeLoader, CheckpointRecoveryFactory checkpointRecoveryFactory, Time rpcTimeout, BlobWriter blobWriter, JobManagerJobMetricGroup jobManagerJobMetricGroup, Time slotRequestTimeout, ShuffleMaster<?> shuffleMaster, JobMasterPartitionTracker partitionTracker, ExecutionDeploymentTracker executionDeploymentTracker, long initializationTimestamp, ComponentMainThreadExecutor mainThreadExecutor, FatalErrorHandler fatalErrorHandler, JobStatusListener jobStatusListener) throws Exception {
    checkState(jobGraph.getJobType() == JobType.BATCH, "Adaptive batch scheduler only supports batch jobs");
    checkAllExchangesBlocking(jobGraph);
    final SlotPool slotPool = slotPoolService.castInto(SlotPool.class).orElseThrow(() -> new IllegalStateException("The DefaultScheduler requires a SlotPool."));
    final SlotSelectionStrategy slotSelectionStrategy = SlotSelectionStrategyUtils.selectSlotSelectionStrategy(JobType.BATCH, jobMasterConfiguration);
    final PhysicalSlotRequestBulkChecker bulkChecker = PhysicalSlotRequestBulkCheckerImpl.createFromSlotPool(slotPool, SystemClock.getInstance());
    final PhysicalSlotProvider physicalSlotProvider = new PhysicalSlotProviderImpl(slotSelectionStrategy, slotPool);
    final ExecutionSlotAllocatorFactory allocatorFactory = new SlotSharingExecutionSlotAllocatorFactory(physicalSlotProvider, false, bulkChecker, slotRequestTimeout);
    final RestartBackoffTimeStrategy restartBackoffTimeStrategy = RestartBackoffTimeStrategyFactoryLoader.createRestartBackoffTimeStrategyFactory(jobGraph.getSerializedExecutionConfig().deserializeValue(userCodeLoader).getRestartStrategy(), jobMasterConfiguration, jobGraph.isCheckpointingEnabled()).create();
    log.info("Using restart back off time strategy {} for {} ({}).", restartBackoffTimeStrategy, jobGraph.getName(), jobGraph.getJobID());
    final ExecutionGraphFactory executionGraphFactory = new DefaultExecutionGraphFactory(jobMasterConfiguration, userCodeLoader, executionDeploymentTracker, futureExecutor, ioExecutor, rpcTimeout, jobManagerJobMetricGroup, blobWriter, shuffleMaster, partitionTracker, true);
    return new AdaptiveBatchScheduler(log, jobGraph, ioExecutor, jobMasterConfiguration, bulkChecker::start, new ScheduledExecutorServiceAdapter(futureExecutor), userCodeLoader, new CheckpointsCleaner(), checkpointRecoveryFactory, jobManagerJobMetricGroup, new VertexwiseSchedulingStrategy.Factory(), FailoverStrategyFactoryLoader.loadFailoverStrategyFactory(jobMasterConfiguration), restartBackoffTimeStrategy, new DefaultExecutionVertexOperations(), new ExecutionVertexVersioner(), allocatorFactory, initializationTimestamp, mainThreadExecutor, jobStatusListener, executionGraphFactory, shuffleMaster, rpcTimeout, DefaultVertexParallelismDecider.from(jobMasterConfiguration), jobMasterConfiguration.getInteger(JobManagerOptions.ADAPTIVE_BATCH_SCHEDULER_MAX_PARALLELISM));
}
Also used : DefaultExecutionVertexOperations(org.apache.flink.runtime.scheduler.DefaultExecutionVertexOperations) SlotSharingExecutionSlotAllocatorFactory(org.apache.flink.runtime.scheduler.SlotSharingExecutionSlotAllocatorFactory) SlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy) VertexwiseSchedulingStrategy(org.apache.flink.runtime.scheduler.strategy.VertexwiseSchedulingStrategy) SlotPool(org.apache.flink.runtime.jobmaster.slotpool.SlotPool) PhysicalSlotRequestBulkChecker(org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotRequestBulkChecker) PhysicalSlotProviderImpl(org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotProviderImpl) SlotSharingExecutionSlotAllocatorFactory(org.apache.flink.runtime.scheduler.SlotSharingExecutionSlotAllocatorFactory) ExecutionSlotAllocatorFactory(org.apache.flink.runtime.scheduler.ExecutionSlotAllocatorFactory) ScheduledExecutorServiceAdapter(org.apache.flink.util.concurrent.ScheduledExecutorServiceAdapter) RestartBackoffTimeStrategy(org.apache.flink.runtime.executiongraph.failover.flip1.RestartBackoffTimeStrategy) CheckpointsCleaner(org.apache.flink.runtime.checkpoint.CheckpointsCleaner) DefaultExecutionGraphFactory(org.apache.flink.runtime.scheduler.DefaultExecutionGraphFactory) ExecutionVertexVersioner(org.apache.flink.runtime.scheduler.ExecutionVertexVersioner) ExecutionGraphFactory(org.apache.flink.runtime.scheduler.ExecutionGraphFactory) DefaultExecutionGraphFactory(org.apache.flink.runtime.scheduler.DefaultExecutionGraphFactory) PhysicalSlotProvider(org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotProvider)

Example 2 with SlotSelectionStrategy

use of org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy in project flink by apache.

the class SlotSelectionStrategyUtils method selectSlotSelectionStrategy.

public static SlotSelectionStrategy selectSlotSelectionStrategy(final JobType jobType, final Configuration configuration) {
    final boolean evenlySpreadOutSlots = configuration.getBoolean(ClusterOptions.EVENLY_SPREAD_OUT_SLOTS_STRATEGY);
    final SlotSelectionStrategy locationPreferenceSlotSelectionStrategy;
    locationPreferenceSlotSelectionStrategy = evenlySpreadOutSlots ? LocationPreferenceSlotSelectionStrategy.createEvenlySpreadOut() : LocationPreferenceSlotSelectionStrategy.createDefault();
    final boolean isLocalRecoveryEnabled = configuration.getBoolean(CheckpointingOptions.LOCAL_RECOVERY);
    if (isLocalRecoveryEnabled) {
        if (jobType == JobType.STREAMING) {
            return PreviousAllocationSlotSelectionStrategy.create(locationPreferenceSlotSelectionStrategy);
        } else {
            LOG.warn("Batch job does not support local recovery. Falling back to use " + locationPreferenceSlotSelectionStrategy.getClass());
            return locationPreferenceSlotSelectionStrategy;
        }
    } else {
        return locationPreferenceSlotSelectionStrategy;
    }
}
Also used : LocationPreferenceSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.LocationPreferenceSlotSelectionStrategy) SlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy) PreviousAllocationSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.PreviousAllocationSlotSelectionStrategy)

Example 3 with SlotSelectionStrategy

use of org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy in project flink by apache.

the class DefaultSchedulerComponents method createPipelinedRegionSchedulerComponents.

private static DefaultSchedulerComponents createPipelinedRegionSchedulerComponents(final JobType jobType, final Configuration jobMasterConfiguration, final SlotPool slotPool, final Time slotRequestTimeout) {
    final SlotSelectionStrategy slotSelectionStrategy = SlotSelectionStrategyUtils.selectSlotSelectionStrategy(jobType, jobMasterConfiguration);
    final PhysicalSlotRequestBulkChecker bulkChecker = PhysicalSlotRequestBulkCheckerImpl.createFromSlotPool(slotPool, SystemClock.getInstance());
    final PhysicalSlotProvider physicalSlotProvider = new PhysicalSlotProviderImpl(slotSelectionStrategy, slotPool);
    final ExecutionSlotAllocatorFactory allocatorFactory = new SlotSharingExecutionSlotAllocatorFactory(physicalSlotProvider, jobType == JobType.STREAMING, bulkChecker, slotRequestTimeout);
    return new DefaultSchedulerComponents(new PipelinedRegionSchedulingStrategy.Factory(), bulkChecker::start, allocatorFactory);
}
Also used : PhysicalSlotRequestBulkChecker(org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotRequestBulkChecker) PhysicalSlotProviderImpl(org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotProviderImpl) SlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy) PipelinedRegionSchedulingStrategy(org.apache.flink.runtime.scheduler.strategy.PipelinedRegionSchedulingStrategy) PhysicalSlotProvider(org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotProvider)

Example 4 with SlotSelectionStrategy

use of org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy in project flink by apache.

the class SlotSelectionStrategyUtilsTest method testCreatePreviousAllocationSlotSelectionStrategyForLocalRecoveryStreamingJob.

@Test
public void testCreatePreviousAllocationSlotSelectionStrategyForLocalRecoveryStreamingJob() {
    final Configuration configuration = new Configuration();
    configuration.set(CheckpointingOptions.LOCAL_RECOVERY, true);
    final SlotSelectionStrategy slotSelectionStrategy = SlotSelectionStrategyUtils.selectSlotSelectionStrategy(JobType.STREAMING, configuration);
    assertThat(slotSelectionStrategy, instanceOf(PreviousAllocationSlotSelectionStrategy.class));
}
Also used : PreviousAllocationSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.PreviousAllocationSlotSelectionStrategy) Configuration(org.apache.flink.configuration.Configuration) LocationPreferenceSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.LocationPreferenceSlotSelectionStrategy) SlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy) PreviousAllocationSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.PreviousAllocationSlotSelectionStrategy) Test(org.junit.Test)

Example 5 with SlotSelectionStrategy

use of org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy in project flink by apache.

the class SlotSelectionStrategyUtilsTest method testCreateLocationPreferenceSlotSelectionStrategyForLocalRecoveryBatchJob.

@Test
public void testCreateLocationPreferenceSlotSelectionStrategyForLocalRecoveryBatchJob() {
    final Configuration configuration = new Configuration();
    configuration.set(CheckpointingOptions.LOCAL_RECOVERY, true);
    final SlotSelectionStrategy slotSelectionStrategy = SlotSelectionStrategyUtils.selectSlotSelectionStrategy(JobType.BATCH, configuration);
    assertThat(slotSelectionStrategy, instanceOf(LocationPreferenceSlotSelectionStrategy.class));
}
Also used : Configuration(org.apache.flink.configuration.Configuration) LocationPreferenceSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.LocationPreferenceSlotSelectionStrategy) LocationPreferenceSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.LocationPreferenceSlotSelectionStrategy) SlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy) PreviousAllocationSlotSelectionStrategy(org.apache.flink.runtime.jobmaster.slotpool.PreviousAllocationSlotSelectionStrategy) Test(org.junit.Test)

Aggregations

SlotSelectionStrategy (org.apache.flink.runtime.jobmaster.slotpool.SlotSelectionStrategy)5 LocationPreferenceSlotSelectionStrategy (org.apache.flink.runtime.jobmaster.slotpool.LocationPreferenceSlotSelectionStrategy)3 PreviousAllocationSlotSelectionStrategy (org.apache.flink.runtime.jobmaster.slotpool.PreviousAllocationSlotSelectionStrategy)3 Configuration (org.apache.flink.configuration.Configuration)2 PhysicalSlotProvider (org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotProvider)2 PhysicalSlotProviderImpl (org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotProviderImpl)2 PhysicalSlotRequestBulkChecker (org.apache.flink.runtime.jobmaster.slotpool.PhysicalSlotRequestBulkChecker)2 Test (org.junit.Test)2 CheckpointsCleaner (org.apache.flink.runtime.checkpoint.CheckpointsCleaner)1 RestartBackoffTimeStrategy (org.apache.flink.runtime.executiongraph.failover.flip1.RestartBackoffTimeStrategy)1 SlotPool (org.apache.flink.runtime.jobmaster.slotpool.SlotPool)1 DefaultExecutionGraphFactory (org.apache.flink.runtime.scheduler.DefaultExecutionGraphFactory)1 DefaultExecutionVertexOperations (org.apache.flink.runtime.scheduler.DefaultExecutionVertexOperations)1 ExecutionGraphFactory (org.apache.flink.runtime.scheduler.ExecutionGraphFactory)1 ExecutionSlotAllocatorFactory (org.apache.flink.runtime.scheduler.ExecutionSlotAllocatorFactory)1 ExecutionVertexVersioner (org.apache.flink.runtime.scheduler.ExecutionVertexVersioner)1 SlotSharingExecutionSlotAllocatorFactory (org.apache.flink.runtime.scheduler.SlotSharingExecutionSlotAllocatorFactory)1 PipelinedRegionSchedulingStrategy (org.apache.flink.runtime.scheduler.strategy.PipelinedRegionSchedulingStrategy)1 VertexwiseSchedulingStrategy (org.apache.flink.runtime.scheduler.strategy.VertexwiseSchedulingStrategy)1 ScheduledExecutorServiceAdapter (org.apache.flink.util.concurrent.ScheduledExecutorServiceAdapter)1