我如何 运行 在独立主机中并行运行多个 spark 应用程序

How do I run multiple spark applications in parallel in standalone master

使用 Spark(1.6.1) 独立主机,我需要 运行 在同一个 spark 主机上运行多个应用程序。 所有申请都在第一个之后提交,保持'WAIT'状态始终。我还观察到,运行ning 拥有所有核心工人的总和。 我已经尝试通过使用 SPARK_EXECUTOR_CORES 来限制它,但它用于 yarn 配置,而我 运行ning 是 "standalone master"。我尝试 运行在同一个主机上设置多个 worker,但每次首次提交的应用程序都会占用所有 worker。

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

您要限制的核心数以使工作人员 运行 成为“CPU 核心”。这些在 Spark 1.6.1 [2]. In Spark there is the option to set the amount of CPU cores when starting a slave [3] 的配置中指定。这发生在 -c CORES, --cores CORES 。它定义了允许 Spark 应用程序在机器上使用的总 CPU 个内核(默认值:全部可用);仅在工作人员上。

启动 Spark 的命令是这样的:

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

希望对您有所帮助

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

导出 SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"

master 的最大核心数现在将限制为 1 个。 如果多个 spark 应用程序是 运行 那么它将只使用一个核心作为主节点。然后定义工人的数量并给工人设置:

导出 SPARK_WORKER_OPTS="-Dspark.deploy.defaultCores=1"

然后每个worker也有一个core。 请记住,必须在配置设置中为每个工作人员设置此项。

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

我得到的是,它以某种方式利用了所有资源来完成一项工作。我们需要定义资源,以便它们也将成为 space 到 运行 其他工作。

下面是我用来提交 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 独立集群上 运行 多个并行作业的关键参数是 spark.cores.max。请注意 spark.executor.instances, num-executorsspark.executor.cores 单独不允许你在 Spark 上独立实现这一点,除了一个活动的作业外,你的所有作业都将停留在 WAITING 状态。

Spark-standalone resource scheduling:

The standalone cluster mode currently only supports a simple FIFO scheduler across applications. However, to allow multiple concurrent users, you can control the maximum number of resources each application will use. By default, it will acquire all cores in the cluster, which only makes sense if you just run one application at a time. You can cap the number of cores by setting spark.cores.max ...