Uh oh!
There was an error while loading. Please reload this page.
[SPARK-53324][K8S] Introduce pending pod limit per ResourceProfile - #51913
[SPARK-53324][K8S] Introduce pending pod limit per ResourceProfile#51913ForVic wants to merge 13 commits into
Conversation
ForVic
commented
Aug 18, 2025
@attilapiros@dongjoon-hyun who created / reviewed #33492 respectively |
|
There was a problem hiding this comment.
Looks reasonable to me.
Will let @attilapiros or @dongjoon-hyun review this though, as they are closer to it.
For context, we are dynamically adding resource profiles, and so a per RP limit will be helpful (so that a single RP does not end up taking too many pod allocation slots) - this PR will help towards usecases of that nature.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…ndingPods` ### What changes were proposed in this pull request? This is a follow-up of the following to apply the latest `master` branch change. - #51913 ### Why are the changes needed? The master branch compilation is broken currently. - https://github.com/apache/spark/actions/runs/18760939731 Recently, we changed `numOutstandingPods`'s visibility, but I missed that the old open PRs didn't have this change. - #52614 ### Does this PR introduce _any_ user-facing change? No. ### How was this patch tested? Pass the CIs. ### Was this patch authored or co-authored using generative AI tooling? No. Closes#52714 from dongjoon-hyun/SPARK-53324. Authored-by: Dongjoon Hyun <dongjoon@apache.org> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
### What changes were proposed in this pull request? Introducing a limit for pending PODs (newly created/requested executors included) per resource profile. There exists a config for a global limit for all resource profiles, but here we add a limit per resource profile. apache#33492 does a lot of the plumbing for us already, counting newly created and pending pods, and we can just pass through the pending pods per resource profile, and limit the number of requests we were going to make for pods for that resource profile to min(previousRequest, maxPodsPerRP). ### Why are the changes needed? For multiple resource profile use cases you can set limits that apply at the resource profile level, instead of globally. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? unit tests added ### Was this patch authored or co-authored using generative AI tooling? No Closesapache#51913 from ForVic/vsunderl/max_pending_pods_per_rpid. Authored-by: ForVic <vsunderland@linkedin.com> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
…ndingPods` ### What changes were proposed in this pull request? This is a follow-up of the following to apply the latest `master` branch change. - apache#51913 ### Why are the changes needed? The master branch compilation is broken currently. - https://github.com/apache/spark/actions/runs/18760939731 Recently, we changed `numOutstandingPods`'s visibility, but I missed that the old open PRs didn't have this change. - apache#52614 ### Does this PR introduce _any_ user-facing change? No. ### How was this patch tested? Pass the CIs. ### Was this patch authored or co-authored using generative AI tooling? No. Closesapache#52714 from dongjoon-hyun/SPARK-53324. Authored-by: Dongjoon Hyun <dongjoon@apache.org> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
…erPodIP|allocation.maxPendingPodsPerRp|driver.annotateExitException)` ### What changes were proposed in this pull request? This PR documents three missing Spark configurations introduced in Spark 4.1.0. | Property | Default | Since | Introduced in | | --- | --- | --- | --- | | `spark.kubernetes.executor.useDriverPodIP` | `false` | 4.1.0 | SPARK-53944 | | `spark.kubernetes.driver.annotateExitException` | `false` | 4.1.0 | SPARK-53335 | | `spark.kubernetes.allocation.maxPendingPodsPerRp` | `Int.MaxValue` | 4.1.0 | SPARK-53324 | ### Why are the changes needed? Three user-facing Kubernetes configurations added in Spark 4.1.0 but weren't documented yet. - #52650 - #52068 - #51913 ### Does this PR introduce _any_ user-facing change? No. Documentation-only update. ### How was this patch tested? Manual review. ### Was this patch authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 4.7) Closes#55591 from dongjoon-hyun/SPARK-56653. Authored-by: Dongjoon Hyun <dongjoon@apache.org> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
…erPodIP|allocation.maxPendingPodsPerRp|driver.annotateExitException)` ### What changes were proposed in this pull request? This PR documents three missing Spark configurations introduced in Spark 4.1.0. | Property | Default | Since | Introduced in | | --- | --- | --- | --- | | `spark.kubernetes.executor.useDriverPodIP` | `false` | 4.1.0 | SPARK-53944 | | `spark.kubernetes.driver.annotateExitException` | `false` | 4.1.0 | SPARK-53335 | | `spark.kubernetes.allocation.maxPendingPodsPerRp` | `Int.MaxValue` | 4.1.0 | SPARK-53324 | ### Why are the changes needed? Three user-facing Kubernetes configurations added in Spark 4.1.0 but weren't documented yet. - #52650 - #52068 - #51913 ### Does this PR introduce _any_ user-facing change? No. Documentation-only update. ### How was this patch tested? Manual review. ### Was this patch authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 4.7) Closes#55591 from dongjoon-hyun/SPARK-56653. Authored-by: Dongjoon Hyun <dongjoon@apache.org> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org> (cherry picked from commit 68456a6) Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
What changes were proposed in this pull request?
Introducing a limit for pending PODs (newly created/requested executors included) per resource profile.
There exists a config for a global limit for all resource profiles, but here we add a limit per resource profile. #33492 does a lot of the plumbing for us already, counting newly created and pending pods, and we can just pass through the pending pods per resource profile, and limit the number of requests we were going to make for pods for that resource profile to min(previousRequest, maxPodsPerRP).
Why are the changes needed?
For multiple resource profile use cases you can set limits that apply at the resource profile level, instead of globally.
Does this PR introduce any user-facing change?
No
How was this patch tested?
unit tests added
Was this patch authored or co-authored using generative AI tooling?
No