-
Notifications
You must be signed in to change notification settings - Fork 28.4k
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-29149][YARN] Update YARN cluster manager For Stage Level Scheduling #27583
Closed
Closed
Changes from all commits
Commits
Show all changes
42 commits
Select commit
Hold shift + click to select a range
0ad97e3
[SPARK-29148]Add stage level scheduling dynamic allocation and schedu…
tgravescs 1d8e1cf
Fix tests and modify Stage info to have resource profile id
tgravescs 6c56fbf
revert pom
tgravescs 66745a1
cleanup
tgravescs 1bf5faf
Fix empty map
tgravescs 24ddabd
minor comments and error on cores being limiting resource
tgravescs 92c0fd2
cleanup
tgravescs a0c3ade
fix typo
tgravescs 54e5b43
clean up warning on shutdown
tgravescs 0408c02
Add checks make sure cores limiting resource in local mode
tgravescs 0a93cc9
Update comments and fix check when no resources
tgravescs c3358fc
Remove some tests that need scheduler changes
tgravescs 35e0a4d
Style fix ups
tgravescs be4e542
Add resourceProfileManager to kubernetes test that is mocking
tgravescs 1bfd706
Make temporary directory for test of standalone resources
tgravescs cd3e000
Address review comments
tgravescs 8540b33
Update to have sparkcontext clear the default profile so that in between
tgravescs c5954b8
put clearnresource profile back in for tests
tgravescs 7b7c513
Fix spacing
tgravescs ae4db1e
Minor comments from late review of PR 26682
tgravescs d270a73
Attempt to clarify commment of calculateAmountAndPartsForFraction
tgravescs 56e34d7
Add () to calls to clearDefaultProfile
tgravescs e0a9d0e
Merge branch 'master' of https://github.com/apache/spark into SPARK-2…
tgravescs 2193e91
Fix from merge to master
tgravescs 9cbce12
Fix merge issue
tgravescs 89dfb19
Change to val's for review comments
tgravescs 5435640
Update test added in master
tgravescs 5449cda
Change to use Optional for ExecutorResourceRequest instead of ""
tgravescs fa3f5a4
Revert "Change to use Optional for ExecutorResourceRequest instead of…
tgravescs 87aab30
Fix speculative test
tgravescs bef3a67
Change allocation manager remove Executors to take resource profile id
tgravescs 15f4c96
Change the allocation manager gauges to be sum of all resource profiles
tgravescs bde49f0
[SPARK-29149] Update YARN cluster manager For Stage Level Scheduling
tgravescs d6d4c8d
cleanup
tgravescs 25f59d3
minor fixes
tgravescs 6f2ace0
Merge branch 'master' of https://github.com/apache/spark into SPARK-2…
tgravescs 48db848
Add GuardedBy to the class datastructures
tgravescs f9c1a05
Update locking to remove unneeded concurrent structures and use
tgravescs 9e79f1a
Add in more explicit synchronized calls to go along with GuardedBy to
tgravescs e89a8b5
Update to fix locking in matchContainerToRequest
tgravescs 14b6251
Update to use concurrentHashMap
tgravescs bd3509c
Update comment to kick jenkins
tgravescs File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
For full functionality we are targetting, which is the minimum hadoop version ?
Does hadoop 3 have all the wiring required for supporting gpu, accel cards, fpga, etc ? Or is it a subset of resources ?
(This is not directly related to this pr, but was for my own understanding, given you should know this well :) ).
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.
hadoop 3.1.1 has full gpu support, they backported some of it to hadoop 2.10 as well. I've tested the normal GPU scheduling feature with both of these as well as older hadoop 2.7 release. With older versions you can still ask Spark for GPUs but if yarn doesn't support it doesn't ask yarn for it but Spark internally still tries to do it. If you are running on nodes with GPUs spark will still use your discovery script to find them and assign them out. if the discovery script doesn't find a gpu and you asked for one then it fails.
This was actually a more recent change that I put in for gpu scheduling as more and more people were asking for support on older versions of hadoop because they don't plan on upgrading to hadoop 3 for a while.
I do need to test all that again with the stage level scheduling.
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.
Thanks for clarifying the behavior when YARN does support GPU, etc as a resource.
I am probably missing something here, would be great to understand this better when YARN does not.
Suppose I have a spark application, depending on some library which requires GPU (for example) and set corresponding resource profile expectations on the RDD's created (I am trying to make a case where app developer did not explicitly configure the resource profiles, but is implicitly leveraging them via some library).
Now, if this application gets run on hadoop 2.7 (or anything before 2.10 as you mentioned), what will be the behavior ?
If I understood it right :
Is this right?
If yes, how do we handle multi-tenancy on the executor host ? or choose which gpu(s) to use ?
Is the assumption that in workloads like this, the entire node is reserved to prevent contention ? I am not sure if you have documented/detailed this somewhere and I missed it !
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.
You are correct on the behavior. Many companies requested for this to work with their existing Hadoop installs (2.x where its < 2.10 or 3.1.1) and use the methods they are using with hadoop 2. I'm not trying to create a solution for everyone, just allow their existing solutions to work.
In most cases I've heard they have like a GPU queue or node labels so they know they run on nodes with GPUs. After that different companies have different ways of doing the multi-tenancy. I've heard of some using file locking for instance. Or you could also put the GPUs in process exclusive mode and then just iterate over them to acquire a free one. The idea here is they can use whatever solution they already have. They can write a custom discovery script and I also added the ability to plugin a class if its easier to write Java code to do this. https://issues.apache.org/jira/browse/SPARK-30689?filter=-2