我使用Spark(1.6.1)独立主节点,在同一台Spark主机上运行多个应用程序。在第一个应用程序之后提交的所有应用程序始终保持“等待”状态。我还注意到,正在运行的应用程序占用了所有工作节点的核心总和。
我已经尝试通过使用SPARK_EXECUTOR_CORES
来限制它,但它适用于yarn配置,而我正在运行的是“独立主节点”。我尝试在同一主节点上运行多个工作节点,但每次第一个提交的应用程序都会占用所有工作节点。
我使用Spark(1.6.1)独立主节点,在同一台Spark主机上运行多个应用程序。在第一个应用程序之后提交的所有应用程序始终保持“等待”状态。我还注意到,正在运行的应用程序占用了所有工作节点的核心总和。
我已经尝试通过使用SPARK_EXECUTOR_CORES
来限制它,但它适用于yarn配置,而我正在运行的是“独立主节点”。我尝试在同一主节点上运行多个工作节点,但每次第一个提交的应用程序都会占用所有工作节点。
我在spark独立集群上遇到了同样的问题。
我发现,它会将所有资源用于一个单独的作业。我们需要定义资源,以便为运行其他作业留出空间。
下面是我用来提交spark作业的命令。
bin/spark-submit --class classname --master spark://hjvm1:6066 --deploy-mode cluster --driver-memory 500M --conf spark.executor.memory=1g --conf spark.cores.max=1 /data/test.jar
spark.cores.max
。请注意,仅使用spark.executor.instances
,num-executors
和spark.executor.cores
无法在Spark独立模式下实现此目标,除了一个活动作业外,所有作业都将停留在WAITING
状态。
Spark-standalone资源调度:
当前的独立集群模式仅支持应用程序间的简单FIFO调度程序。但是,为了允许多个并发用户,您可以控制每个应用程序将使用的最大资源数量。默认情况下,它将获取集群中的所有核心,这只有在一次运行一个应用程序时才有意义。您可以通过设置spark.cores.max来限制核心数...
你想要限制用于运行工作进程的内核数,这些内核被称为“CPU内核”。它们在Spark 1.6.1的配置中指定[2]。在Spark中,启动从节点时有设置CPU内核数量的选项[3]。这是通过 -c CORES, --cores CORES 发生的,该选项定义允许Spark应用程序在机器上使用的总CPU内核数(默认为所有可用的内核数);仅限于工作节点。
启动Spark的命令可能如下所示:
./sbin/start-all.sh --cores 2
希望这可以帮到你。