GitHub user hbhanawat opened a pull request:

    https://github.com/apache/spark/pull/11723

    [SPARK-13904][Scheduler]Add support for pluggable cluster manager 

    ## What changes were proposed in this pull request?
    
    This commit adds support for pluggable cluster manager. And also allows a 
cluster manager to clean up tasks without taking the parent process down.
    
    To plug a new external cluster manager, ExternalClusterManager trait should 
be implemented. It returns task scheduler and backend scheduler that will be 
used by SparkContext to schedule tasks. An external cluster manager is 
registered using the java.util.ServiceLoader mechanism (This mechanism is also 
being used to register data sources like parquet, json, jdbc etc.). This allows 
auto-loading implementations of ExternalClusterManager interface.
    
    Currently, when a driver fails, executors exit using system.exit. This does 
not bode well for cluster managers that would like to reuse the parent process 
of an executor. Hence,
    
      1. Moving system.exit to a function that can be overriden in subclasses 
of CoarseGrainedExecutorBackend.
      2. Added functionality of killing all the running tasks in an executor.
    
    ## How was this patch tested?
    ExternalClusterManagerSuite.scala was added to test this patch. 
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/hbhanawat/spark pluggableScheduler

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/11723.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #11723
    
----
commit 800834f24ad1f0c4a68d8d49f600db6570d100ef
Author: Hemant Bhanawat <hem...@snappydata.io>
Date:   2016-03-15T09:00:30Z

    This commit adds support for pluggable cluster manager. And also allows a 
cluster manager to clean up tasks without taking the parent process down.
    
    To plug a new external cluster manager, ExternalClusterManager trait should 
be implemented. It returns task scheduler and backend scheduler that will be 
used by SparkContext to schedule tasks. An external cluster manager is 
registered using the java.util.ServiceLoader mechanism (This mechanism is also 
being used to register data sources like parquet, json, jdbc etc.). This allows 
auto-loading implementations of ExternalClusterManager interface.
    
    Currently, when a driver fails, executors exit using system.exit. This does 
not bode well for cluster managers that would like to reuse the parent process 
of an executor. Hence,
    
      1. Moving system.exit to a function that can be overriden in subclasses 
of CoarseGrainedExecutorBackend.
      2. Added functionality of killing all the running tasks in an executor.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to