Repository navigation
Conversation
1 of 2 tasks
ForVic
force-pushed
the
ForVic/spark-ui-shuffle-assignments
branch
2 times, most recently
from
October 22, 2026 07:11
8ae8155 to
da3470e
Compare
…n tab Show the slots reserved on each worker for every Celeborn shuffle on the Celeborn tab of the Spark UI and History Server. - LifecycleManager reports the slots reserved on each worker once a shuffle is registered to a ShuffleAssignmentListener, with both the Celeborn and the application shuffle id. SparkShuffleManager hands the listener to its lazily created LifecycleManager. - The Celeborn UI plugin registers the listener and posts a CelebornShuffleAssignmentEvent per shuffle, so applications without the plugin post nothing. CelebornListener persists a per-shuffle summary, retaining up to spark.ui.retainedStages shuffles, and the shuffles and slots of each worker over all shuffles. - The Celeborn tab gains a summary line and two collapsed tables: Shuffle Assignments and Worker Slots.
ForVic
force-pushed
the
ForVic/spark-ui-shuffle-assignments
branch
from
October 22, 2026 07:52
da3470e to
d1e7651
Compare
ForVic
marked this pull request as ready for review
October 22, 2026 17:59
Contributor
Author
|
cc @zaynt4606 if you could take a look when you get the chance |
This branch has not been deployed
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What changes were proposed in this pull request?
JIRA: https://issues.apache.org/jira/browse/CELEBORN-2499
Show the slots reserved on each worker for every Celeborn shuffle on the Celeborn tab of the Spark UI and the History Server. This is the "Shuffle Assignments" follow-up planned in CELEBORN-2415. The driver-side LifecycleManager already knows the assignment, so no executor instrumentation is needed.
LifecycleManagerreports the slots reserved on each worker to aShuffleAssignmentListener, together with the Celeborn shuffle id and the application (Spark) shuffle id. With stage rerun enabled, the two ids differ.SparkShuffleManager.registerShuffleAssignmentListenerhands the listener to its lazily created LifecycleManager.CelebornPluginregisters the listener and posts aCelebornShuffleAssignmentEventper shuffle, so applications without the plugin post nothing. Registration happens inregisterMetricsbecause Spark 4 initializes the shuffle manager after the driver plugins'init.CelebornListenerpersists two things, for both the live UI and History Server replay:spark.ui.retainedStagesshuffles;Why are the changes needed?
The Celeborn tab shows nothing about which workers serve an application's shuffles or how evenly their slots are spread, which is needed to understand worker hotspots for a specific application.
Does this PR resolve a correctness bug?
Does this PR introduce any user-facing change?
The Celeborn tab gains the Shuffle Assignments summary line and two collapsed tables. Nothing changes for applications that don't enable
CelebornPlugin. Some cases are not covered:SparkShuffleManager(e.g. Gluten's) report no assignments.Same workload and cluster (Spark 3.5.9, 3 workers, replication enabled).
Before (main):
After, with the collapsed sections expanded:
How was this patch tested?
CelebornListenerSuite:spark.ui.retainedStages;CelebornPluginSuite: a local SparkContext withCelebornPluginandSparkShuffleManagerhas the listener registered, and reported assignments reach the UI store.LifecycleManagerSuite: against a mini cluster, the listener receives both shuffle ids and primary plus replica slots for every partition../build/mvn -P<profile> -pl client-spark/spark-3-ui testpasses forspark-3.0,spark-3.5andspark-4.0.