在独立模式下提交多个 Spark 应用程序



我有4个Spark应用程序(从文本文件中查找字数),它用4种不同的语言(R,python,java,scala)编写

./wordcount.R
./wordcount.py
./wordcount.java
./wordcount.scala

火花在独立模式下工作... 1.4工作节点 2.1 每个工作节点的核心 每个节点 3.1GB 内存 4.core_max设置为 1

./conf/spark-env.sh

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"
export SPARK_WORKER_OPTS="-Dspark.deploy.defaultCores=1"
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_INSTANCES=4

我使用终端上的文件提交了 Spark 应用程序 pgm.sh

./bin/spark-submit  --master spark://-Aspire-E5-001:7077 ./wordcount.R  &
./bin/spark-submit  --master spark://-Aspire-E5-001:7077 ./wordcount.py &
./bin/spark-submit  --master spark://-Aspire-E5-001:7077 ./project_2.jar &
./bin/spark-submit  --master spark://-Aspire-E5-001:7077 ./project_2.jar 

当每个进程单独执行时,需要 2 秒。 当所有进程使用终端上的文件执行.sh需要 5 秒到 6 秒

如何并行运行不同的 Spark 应用程序? 如何将每个Spark应用程序分配给单个核心?

编辑:在独立模式下,根据文档,您只需将spark.cores.max设置为小于独立集群大小的值,并且还建议为未显式设置此设置的应用程序设置spark.deploy.defaultCores

原始答案(假设这是在本地或 YARN 中运行的):当您提交多个 Spark 应用程序时,它们应该自动并行运行,前提是您正在运行的集群或服务器配置为允许这样做。例如,默认情况下,YARN 集群将并行运行应用程序。请注意,并行运行的应用程序越多,资源争用的风险就越大。

关于"如何将每个 Spark 应用程序分配给单个核心":您不需要,Spark 处理从工作线程到核心的调度。您可以配置每个工作线程执行程序使用多少资源,但这些资源的分配取决于调度程序(无论是 Spark、Yarn 还是其他一些调度程序)。

最新更新