2

使用Spark(1.6.1)独立主站,我需要在同一个火花主站上运行多个应用程序。 所有申请提交后第一个,继续保持'等待'状态总是。我还观察到,一次运行持有所有核心工人总数。 我已经尝试通过使用SPARK_EXECUTOR_CORES限制它,但它的纱线配置,而我正在运行是“独立大师”。我尝试在同一台主设备上运行许多工作人员,但每次首次提交应用程序都会消耗所有工人。如何在独立主站中并行运行多个火花应用程序

回答

2

我在火花独立群集上遇到了同样的问题。

我得到的是,它以某种方式将所有资源用于一项工作。我们需要定义资源,以便他们的空间也可以运行其他工作。

以下是我用来提交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 
1

我假设你在一台服务器上运行所有的工人并尝试模拟一个集群。这种假设的原因是,否则可以使用一名工人和主人运行独立Spark群集。
执行程序内核与普通内核相比完全不同。要设置执行程序的数量,您需要像先前所说的那样打开YARN。执行程序核心是执行程序可以运行的并发任务的数量(使用hdfs时,建议将其保持在5以下)[1]。

要限制使工作人员运行的核心数是“CPU核心”。这些在Spark 1.6.1 [2]的配置中指定。在Spark中,可以选择设置启动从站时的CPU内核数量[3]。这发生在-c CORES, - core CORES。其中定义了允许Spark应用程序在机器上使用的总CPU内核(默认:全部可用);只有工人。

的命令来启动星火会是这样的:

./sbin/start-all.sh --cores 2

希望这有助于

0

在配置设置中添加此行到“./conf/spark-env.sh”这个文件。

出口SPARK_MASTER_OPTS = “ - Dspark.deploy.defaultCores = 1”

最大内核现在将限制为1主人。如果多个Spark应用程序正在运行,那么它将只使用一个主内核。届时定义工人的数量,并给工人设置:

出口SPARK_WORKER_OPTS =“ - Dspark.deploy.defaultCores = 1”

每个工人都有然后一个核心为好。 请记住,这必须在配置设置中为每个工作人员设置。

+1

这个答案是错的。问题的目标是与“工作人员”群集运行,这个答案只适用于本地工作。这个答案仅适用于主控跑步。主人现在只会消耗一个核心。 SPARK_MASTER_OPTS仅应用于主形式\t配置属性“-Dx = Y”(默认值:无)。应该使用SPARK_WORKER_OPTS \t以“-Dx = y”格式(默认值:无)仅适用于工作人员的配置属性对工作人员进行调整。如果在工作人员内核被设置,这个答案会起作用。 –

1

用于火花独立集群上运行多个并行作业的一个关键参数是spark.cores.max。需要注意的是spark.executor.instancesnum-executorsspark.executor.cores本身不会让你除了一个主动一个将坚持与WAITING状态,实现这一在星火独立,所有作业。

Spark-standalone resource scheduling

的独立簇模式目前仅支持跨应用程序的简单FIFO 调度器。然而,允许多个并发用户 ,你可以控制资源的每个 应用程序将使用的最大数量。默认情况下,将收购 集群,这才有意义,如果你只是运行在 一次一个应用程序中的所有核心。您可以通过设置spark.cores.max帽核心数量......

相关问题