From a44aa2d12014ab300bd68efe74c549b0e236041e Mon Sep 17 00:00:00 2001 From: Lijie Xu Date: Tue, 29 Dec 2015 18:11:49 +0800 Subject: [PATCH 1/2] [SPARK-12554][Core]Standalone scheduler hangs when app.coreToAssign < minCoresPerExecutor https://issues.apache.org/jira/browse/SPARK-12554 --- core/src/main/scala/org/apache/spark/deploy/master/Master.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bd3d981ce08b..6c55f21151d4 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 @@ -601,7 +601,7 @@ private[deploy] class Master( /** Return whether the specified worker can launch an executor for this app. */ def canLaunchExecutor(pos: Int): Boolean = { - val keepScheduling = coresToAssign >= minCoresPerExecutor + val keepScheduling = coresToAssign >= 0 val enoughCores = usableWorkers(pos).coresFree - assignedCores(pos) >= minCoresPerExecutor // If we allow multiple executors per worker, then we can always launch new executors. From 1b7fd0d366c1e6967259586ee72bf44f8138a509 Mon Sep 17 00:00:00 2001 From: Lijie Xu Date: Tue, 29 Dec 2015 18:14:38 +0800 Subject: [PATCH 2/2] Update Master.scala --- core/src/main/scala/org/apache/spark/deploy/master/Master.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6c55f21151d4..07343a8a4f3a 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 @@ -601,7 +601,7 @@ private[deploy] class Master( /** Return whether the specified worker can launch an executor for this app. */ def canLaunchExecutor(pos: Int): Boolean = { - val keepScheduling = coresToAssign >= 0 + val keepScheduling = coresToAssign > 0 val enoughCores = usableWorkers(pos).coresFree - assignedCores(pos) >= minCoresPerExecutor // If we allow multiple executors per worker, then we can always launch new executors.