57
57
import org .apache .flink .runtime .executiongraph .DefaultVertexAttemptNumberStore ;
58
58
import org .apache .flink .runtime .executiongraph .ExecutionAttemptID ;
59
59
import org .apache .flink .runtime .executiongraph .ExecutionGraph ;
60
- import org .apache .flink .runtime .executiongraph .ExecutionJobVertex ;
61
60
import org .apache .flink .runtime .executiongraph .ExecutionVertex ;
62
61
import org .apache .flink .runtime .executiongraph .JobStatusListener ;
63
62
import org .apache .flink .runtime .executiongraph .MutableVertexAttemptNumberStore ;
110
109
import org .apache .flink .runtime .scheduler .adaptive .allocator .ReservedSlots ;
111
110
import org .apache .flink .runtime .scheduler .adaptive .allocator .SlotAllocator ;
112
111
import org .apache .flink .runtime .scheduler .adaptive .allocator .VertexParallelism ;
113
- import org .apache .flink .runtime .scheduler .adaptive .scalingpolicy .EnforceMinimalIncreaseRescalingController ;
114
- import org .apache .flink .runtime .scheduler .adaptive .scalingpolicy .EnforceParallelismChangeRescalingController ;
115
- import org .apache .flink .runtime .scheduler .adaptive .scalingpolicy .RescalingController ;
116
112
import org .apache .flink .runtime .scheduler .exceptionhistory .ExceptionHistoryEntry ;
117
113
import org .apache .flink .runtime .scheduler .exceptionhistory .RootExceptionHistoryEntry ;
118
114
import org .apache .flink .runtime .scheduler .metrics .DeploymentStateTimeMetrics ;
147
143
import java .util .concurrent .ScheduledFuture ;
148
144
import java .util .concurrent .TimeUnit ;
149
145
import java .util .function .Function ;
150
- import java .util .stream .Collectors ;
151
146
147
+ import static org .apache .flink .configuration .JobManagerOptions .MIN_PARALLELISM_INCREASE ;
152
148
import static org .apache .flink .runtime .executiongraph .ExecutionGraphUtils .isAnyOutputBlocking ;
153
149
154
150
/**
@@ -228,7 +224,8 @@ public static Settings of(Configuration configuration) {
228
224
.orElse (stabilizationTimeoutDefault ),
229
225
configuration .get (JobManagerOptions .SLOT_IDLE_TIMEOUT ),
230
226
scalingIntervalMin ,
231
- scalingIntervalMax );
227
+ scalingIntervalMax ,
228
+ configuration .get (MIN_PARALLELISM_INCREASE ));
232
229
}
233
230
234
231
private final SchedulerExecutionMode executionMode ;
@@ -237,20 +234,23 @@ public static Settings of(Configuration configuration) {
237
234
private final Duration slotIdleTimeout ;
238
235
private final Duration scalingIntervalMin ;
239
236
private final Duration scalingIntervalMax ;
237
+ private final int minParallelismChangeForDesiredRescale ;
240
238
241
239
private Settings (
242
240
SchedulerExecutionMode executionMode ,
243
241
Duration initialResourceAllocationTimeout ,
244
242
Duration resourceStabilizationTimeout ,
245
243
Duration slotIdleTimeout ,
246
244
Duration scalingIntervalMin ,
247
- Duration scalingIntervalMax ) {
245
+ Duration scalingIntervalMax ,
246
+ int minParallelismChangeForDesiredRescale ) {
248
247
this .executionMode = executionMode ;
249
248
this .initialResourceAllocationTimeout = initialResourceAllocationTimeout ;
250
249
this .resourceStabilizationTimeout = resourceStabilizationTimeout ;
251
250
this .slotIdleTimeout = slotIdleTimeout ;
252
251
this .scalingIntervalMin = scalingIntervalMin ;
253
252
this .scalingIntervalMax = scalingIntervalMax ;
253
+ this .minParallelismChangeForDesiredRescale = minParallelismChangeForDesiredRescale ;
254
254
}
255
255
256
256
public SchedulerExecutionMode getExecutionMode () {
@@ -276,6 +276,10 @@ public Duration getScalingIntervalMin() {
276
276
public Duration getScalingIntervalMax () {
277
277
return scalingIntervalMax ;
278
278
}
279
+
280
+ public int getMinParallelismChangeForDesiredRescale () {
281
+ return minParallelismChangeForDesiredRescale ;
282
+ }
279
283
}
280
284
281
285
private final Settings settings ;
@@ -308,10 +312,6 @@ public Duration getScalingIntervalMax() {
308
312
309
313
private final SlotAllocator slotAllocator ;
310
314
311
- private final RescalingController rescalingController ;
312
-
313
- private final RescalingController forceRescalingController ;
314
-
315
315
private final ExecutionGraphFactory executionGraphFactory ;
316
316
317
317
private State state = new Created (this , LOG );
@@ -395,10 +395,6 @@ public AdaptiveScheduler(
395
395
396
396
this .componentMainThreadExecutor = mainThreadExecutor ;
397
397
398
- this .rescalingController = new EnforceMinimalIncreaseRescalingController (configuration );
399
-
400
- this .forceRescalingController = new EnforceParallelismChangeRescalingController ();
401
-
402
398
this .executionGraphFactory = executionGraphFactory ;
403
399
404
400
final JobStatusStore jobStatusStore = new JobStatusStore (initializationTimestamp );
@@ -1048,8 +1044,8 @@ public void goToExecuting(
1048
1044
this ,
1049
1045
userCodeClassLoader ,
1050
1046
failureCollection ,
1051
- settings . getScalingIntervalMin ( ),
1052
- settings .getScalingIntervalMax ()));
1047
+ DefaultRescaleManager . Factory . fromSettings ( settings ),
1048
+ settings .getMinParallelismChangeForDesiredRescale ()));
1053
1049
}
1054
1050
1055
1051
@ Override
@@ -1275,34 +1271,10 @@ private ExecutionGraph createExecutionGraphAndRestoreState(
1275
1271
LOG );
1276
1272
}
1277
1273
1278
- /**
1279
- * In regular mode, rescale the job if added resource meets {@link
1280
- * JobManagerOptions#MIN_PARALLELISM_INCREASE}. In force mode rescale if the parallelism has
1281
- * changed.
1282
- */
1283
1274
@ Override
1284
- public boolean shouldRescale (ExecutionGraph executionGraph , boolean forceRescale ) {
1285
- final Optional <VertexParallelism > maybeNewParallelism =
1286
- slotAllocator .determineParallelism (
1287
- jobInformation , declarativeSlotPool .getAllSlotsInformation ());
1288
- return maybeNewParallelism
1289
- .filter (
1290
- vertexParallelism -> {
1291
- RescalingController rescalingControllerToUse =
1292
- forceRescale ? forceRescalingController : rescalingController ;
1293
- return rescalingControllerToUse .shouldRescale (
1294
- getCurrentParallelism (executionGraph ), vertexParallelism );
1295
- })
1296
- .isPresent ();
1297
- }
1298
-
1299
- private static VertexParallelism getCurrentParallelism (ExecutionGraph executionGraph ) {
1300
- return new VertexParallelism (
1301
- executionGraph .getAllVertices ().values ().stream ()
1302
- .collect (
1303
- Collectors .toMap (
1304
- ExecutionJobVertex ::getJobVertexId ,
1305
- ExecutionJobVertex ::getParallelism )));
1275
+ public Optional <VertexParallelism > getAvailableVertexParallelism () {
1276
+ return slotAllocator .determineParallelism (
1277
+ jobInformation , declarativeSlotPool .getAllSlotsInformation ());
1306
1278
}
1307
1279
1308
1280
@ Override
0 commit comments