Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
2568a6c
Rename JobProgressPage to AllStagesPage:
JoshRosen Oct 29, 2014
4487dcb
[SPARK-4145] Web UI job pages
JoshRosen Oct 30, 2014
bfce2b9
Address review comments, except for progress bar.
JoshRosen Nov 6, 2014
4b206fb
Merge remote-tracking branch 'origin/master' into job-page
JoshRosen Nov 6, 2014
45343b8
More comments
JoshRosen Nov 6, 2014
a475ea1
Add progress bars to jobs page.
JoshRosen Nov 11, 2014
56701fa
Move last stage name / description logic out of markup.
JoshRosen Nov 11, 2014
1cf4987
Fix broken kill links; add Selenium test to avoid future regressions.
JoshRosen Nov 11, 2014
85e9c85
Extract startTime into separate variable.
JoshRosen Nov 11, 2014
4d58e55
Change label to "Tasks (for all stages)"
JoshRosen Nov 11, 2014
4846ce4
Hide "(Job Group") if no jobs were submitted in job groups.
JoshRosen Nov 12, 2014
b7bf30e
Add stages progress bar; fix bug where active stages show as completed.
JoshRosen Nov 12, 2014
8a2351b
Add help tooltip to Spark Jobs page.
JoshRosen Nov 12, 2014
3d0a007
Merge remote-tracking branch 'origin/master' into job-page
JoshRosen Nov 17, 2014
1145c60
Display text instead of progress bar for stages.
JoshRosen Nov 17, 2014
d62ea7b
Add failing Selenium test for stage overcounting issue.
JoshRosen Nov 17, 2014
79793cd
Track indices of completed stage to avoid overcounting when failures …
JoshRosen Nov 18, 2014
5884f91
Add StageInfos to SparkListenerJobStart event.
JoshRosen Nov 18, 2014
8ab6c28
Compute numTasks from job start stage infos.
JoshRosen Nov 18, 2014
8955f4c
Display information for pending stages on jobs page.
JoshRosen Nov 19, 2014
e2f2c43
Fix sorting of stages in job details page.
JoshRosen Nov 19, 2014
171b53c
Move `startTime` to the start of SparkContext.
JoshRosen Nov 19, 2014
f2a15da
Add status field to job details page.
JoshRosen Nov 19, 2014
5eb39dc
Add pending stages table to job page.
JoshRosen Nov 19, 2014
d69c775
Fix table sorting on all jobs page.
JoshRosen Nov 19, 2014
7d10b97
Merge remote-tracking branch 'apache/master' into job-page
JoshRosen Nov 20, 2014
67080ba
Ensure that "phantom stages" don't cause memory leaks.
JoshRosen Nov 20, 2014
eebdc2c
Don’t display pending stages for completed jobs.
JoshRosen Nov 20, 2014
034aa8d
Use `.max()` to find result stage for job.
JoshRosen Nov 20, 2014
0b77e3e
More bug fixes for phantom stages.
JoshRosen Nov 20, 2014
1f45d44
Incorporate a bunch of minor review feedback.
JoshRosen Nov 20, 2014
61c265a
Add “skipped stages” table; only display non-empty tables.
JoshRosen Nov 20, 2014
2bbf41a
Update job progress bar to reflect skipped tasks/stages.
JoshRosen Nov 20, 2014
6f17f3f
Only store StageInfos in SparkListenerJobStart event.
JoshRosen Nov 21, 2014
ff804cd
Don't write "Stage Ids" field in JobStartEvent JSON.
JoshRosen Nov 21, 2014
b89c258
More JSON protocol backwards-compatibility fixes.
JoshRosen Nov 21, 2014
f00c851
Fix JsonProtocol compatibility
JoshRosen Nov 21, 2014
eb05e90
Disable kill button in completed stages tables.
JoshRosen Nov 24, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge remote-tracking branch 'apache/master' into job-page
Conflicts:
	core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala
  • Loading branch information
JoshRosen committed Nov 20, 2014
commit 7d10b9755ed245e081cfa66a81186169fe89017f
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,10 @@ class JobProgressListener(conf: SparkConf) extends SparkListener with Logging {
val stageIdToData = new HashMap[(StageId, StageAttemptId), StageUIData]
val stageIdToInfo = new HashMap[StageId, StageInfo]
val stageIdToActiveJobIds = new HashMap[StageId, HashSet[JobId]]

// Number of completed and failed stages, may not actually equal to completedStages.size and
// failedStages.size respectively due to completedStage and failedStages only maintain the latest
// part of the stages, the earlier ones will be removed when there are too many stages for
// memory sake.
val poolToActiveStages = HashMap[PoolName, HashMap[StageId, StageInfo]]()
// Total of completed and failed stages that have ever been run. These may be greater than
// `completedStages.size` and `failedStages.size` if we have run more stages or jobs than
// JobProgressListener's retention limits.
var numCompletedStages = 0
var numFailedStages = 0

Expand Down Expand Up @@ -97,7 +96,8 @@ class JobProgressListener(conf: SparkConf) extends SparkListener with Logging {
Map(
"activeStages" -> activeStages.size,
"activeJobs" -> activeJobs.size,
"poolToActiveStages" -> poolToActiveStages.values.map(_.size).sum
"poolToActiveStages" -> poolToActiveStages.values.map(_.size).sum,
"stageIdToActiveJobIds" -> stageIdToActiveJobIds.values.map(_.size).sum
)
}

Expand Down Expand Up @@ -216,7 +216,7 @@ class JobProgressListener(conf: SparkConf) extends SparkListener with Logging {
} else {
failedStages += stage
numFailedStages += 1
trimIfNecessary(failedStages)
trimStagesIfNecessary(failedStages)
}

for (
Expand All @@ -233,19 +233,6 @@ class JobProgressListener(conf: SparkConf) extends SparkListener with Logging {
}
}

/** If stages is too large, remove and garbage collect old stages */
private def trimIfNecessary(stages: ListBuffer[StageInfo]) = synchronized {
if (stages.size > retainedStages) {
val toRemove = math.max(retainedStages / 10, 1)
stages.take(toRemove).foreach { s =>
stageIdToData.remove((s.stageId, s.attemptId))
stageIdToInfo.remove(s.stageId)
stageIdToActiveJobIds.remove(s.stageId)
}
stages.trimStart(toRemove)
}
}

/** For FIFO, all stages are contained by "default" pool but "default" pool here is meaningless */
override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted) = synchronized {
val stage = stageSubmitted.stageInfo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,10 @@ class JobProgressListenerSuite extends FunSuite with LocalSparkContext with Matc
}

private def createJobStartEvent(jobId: Int, stageIds: Seq[Int]) = {
SparkListenerJobStart(jobId, stageIds)
val stageInfos = stageIds.map { stageId =>
new StageInfo(stageId, 0, stageId.toString, 0, null, "")
}
SparkListenerJobStart(jobId, stageInfos, stageIds)
}

private def createJobEndEvent(jobId: Int, failed: Boolean = false) = {
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.