diff --git a/core/src/main/scala/org/apache/spark/shuffle/ShuffleManager.scala b/core/src/main/scala/org/apache/spark/shuffle/ShuffleManager.scala index 4e2183451c258..a3f5f9df4a0ac 100644 --- a/core/src/main/scala/org/apache/spark/shuffle/ShuffleManager.scala +++ b/core/src/main/scala/org/apache/spark/shuffle/ShuffleManager.scala @@ -91,6 +91,15 @@ private[spark] trait ShuffleManager { */ def shuffleBlockResolver: ShuffleBlockResolver + /** + * The flag to indicate if the shuffle manager needs to work with a local external + * shuffle service, by default it returns true; if it doesn't work with a local external + * shuffle service, this function needs to be overridden and return false instead. + * @return true if this shuffle manager needs to work with a local external shuffle service, + * otherwise false. + */ + def supportExternalShuffleService: Boolean = true + /** Shut down this ShuffleManager. */ def stop(): Unit } diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManager.scala b/core/src/main/scala/org/apache/spark/storage/BlockManager.scala index 9ebf26b6120de..297360b19a1f2 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManager.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManager.scala @@ -529,7 +529,8 @@ private[spark] class BlockManager( } // Register Executors' configuration with the local shuffle service, if one should exist. - if (externalShuffleServiceEnabled && !blockManagerId.isDriver) { + if (externalShuffleServiceEnabled && !blockManagerId.isDriver + && shuffleManager.supportExternalShuffleService) { registerWithExternalShuffleServer() }