aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorKousuke Saruta <sarutak@oss.nttdata.co.jp>2014-09-17 16:23:50 -0700
committerAndrew Or <andrewor14@gmail.com>2014-09-17 16:23:50 -0700
commitcbc065039f5176acc49899462bfab2521da26701 (patch)
tree55e91c057402a2a7e256f1d0e213b58a1f7171ab /core
parent7fc3bb7c88a6bf5348d52ffee37a220a47c5a398 (diff)
downloadspark-cbc065039f5176acc49899462bfab2521da26701.tar.gz
spark-cbc065039f5176acc49899462bfab2521da26701.tar.bz2
spark-cbc065039f5176acc49899462bfab2521da26701.zip
[SPARK-3571] Spark standalone cluster mode doesn't work.
I think, this issue is caused by #1106 Author: Kousuke Saruta <sarutak@oss.nttdata.co.jp> Closes #2436 from sarutak/SPARK-3571 and squashes the following commits: 7a4deea [Kousuke Saruta] Modified Master.scala to use numWorkersVisited and numWorkersAlive instead of stopPos 4e51e35 [Kousuke Saruta] Modified Master to prevent from 0 divide 4817ecd [Kousuke Saruta] Brushed up previous change 71e84b6 [Kousuke Saruta] Modified Master to enable schedule normally
Diffstat (limited to 'core')
-rw-r--r--core/src/main/scala/org/apache/spark/deploy/master/Master.scala11
1 files changed, 6 insertions, 5 deletions
diff --git a/core/src/main/scala/org/apache/spark/deploy/master/Master.scala b/core/src/main/scala/org/apache/spark/deploy/master/Master.scala
index 2a3bd6ba0b..432b552c58 100644
--- a/core/src/main/scala/org/apache/spark/deploy/master/Master.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/master/Master.scala
@@ -489,23 +489,24 @@ private[spark] class Master(
// First schedule drivers, they take strict precedence over applications
// Randomization helps balance drivers
val shuffledAliveWorkers = Random.shuffle(workers.toSeq.filter(_.state == WorkerState.ALIVE))
- val aliveWorkerNum = shuffledAliveWorkers.size
+ val numWorkersAlive = shuffledAliveWorkers.size
var curPos = 0
+
for (driver <- waitingDrivers.toList) { // iterate over a copy of waitingDrivers
// We assign workers to each waiting driver in a round-robin fashion. For each driver, we
// start from the last worker that was assigned a driver, and continue onwards until we have
// explored all alive workers.
- curPos = (curPos + 1) % aliveWorkerNum
- val startPos = curPos
var launched = false
- while (curPos != startPos && !launched) {
+ var numWorkersVisited = 0
+ while (numWorkersVisited < numWorkersAlive && !launched) {
val worker = shuffledAliveWorkers(curPos)
+ numWorkersVisited += 1
if (worker.memoryFree >= driver.desc.mem && worker.coresFree >= driver.desc.cores) {
launchDriver(worker, driver)
waitingDrivers -= driver
launched = true
}
- curPos = (curPos + 1) % aliveWorkerNum
+ curPos = (curPos + 1) % numWorkersAlive
}
}