-
Notifications
You must be signed in to change notification settings - Fork 28k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SPARK-21040][CORE] Speculate tasks which are running on decommission executors #28619
Changes from 7 commits
775cacb
7521adf
55dc94f
dae9cfe
f5a7313
1cae338
795ede6
61f850d
43ba62e
4affa58
d87b311
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1842,6 +1842,17 @@ package object config { | |
.timeConf(TimeUnit.MILLISECONDS) | ||
.createOptional | ||
|
||
private[spark] val EXECUTOR_DECOMMISSION_KILL_INTERVAL = | ||
ConfigBuilder("spark.executor.decommission.killInterval") | ||
.doc("Duration after which a decommissioned executor will be killed forcefully." + | ||
"This config is useful for cloud environments where we know in advance when " + | ||
"an executor is going to go down after decommissioning signal Ex- around 2 mins " + | ||
"in aws spot nodes, 1/2 hrs in spot block nodes etc. This config is currently " + | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So the timeout is decided by the cloud vendors? What does this config specify? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @cloud-fan This config can be set by users based on their setups. If they are using AWS spot nodes, timeout can be set to somewhere around 120 seconds, if they are using fix duration 6hrs spot blocks (say they decommission executors at 5:45), timeout can be set to 15 mins and so on. If user doesn't set this timeout, things will remain as they were and tasks running on decommission executors won't get any special treatment with respect to speculation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is it possible that Spark can get this timeout value from the cluster manager? So that users don't need to set it manually. cc @holdenk There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @cloud-fan As per my understanding, Worker Decommissioning is getting triggered currently using SIGPWR signal (and not via some message coming from YARN/Kubernetes Cluster manager). So getting this timeout from Spark Cluster Manager might not be possible. We might be able to do this once Spark's Worker Decommissioning logic starts triggering via communication from YARN etc in future. cc @holdenk There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe there are some situations where we can know the length of time from the cluster manager or from Spark it's self, but not all. I think having a configurable default for folks who know their cloud provider environment makes sense |
||
"used to decide what tasks running on decommission executors to speculate") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: Missing dot from the end of sentence. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed. |
||
.version("3.1.0") | ||
.timeConf(TimeUnit.SECONDS) | ||
.createOptional | ||
|
||
private[spark] val STAGING_DIR = ConfigBuilder("spark.yarn.stagingDir") | ||
.doc("Staging directory used while submitting applications.") | ||
.version("2.0.0") | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: does the Ex in the "go down after decommissioning signal Ex- around 2 mins" stands for "example"?
Sorry I have not seen this abbreviation used before and still not sure it exists. What about "i.e." that even used in Spark documentation several times?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed to "i.e.".