跨应用程序的火花调度

时间:2017-06-15 06:03:45

标签: r apache-spark scheduling resource-scheduling

我想同时在四个不同的文件上运行spark wordcount应用程序。

我有一个独立的集群,有4个工作节点,每个节点有一个核心和1GB内存。

spark在独立模式下工作...... 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

**

我已经使用.sh文件

执行了
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt1 &
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt2 &
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt3 &
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt4

这是一种并行提交申请的正确方法吗?

当一个运行它的应用程序需要2秒时(仅使用一个核心) 当同时给出4个应用程序时,每个应用程序需要超过4秒...... 如何在不同文件上并行运行spark应用程序?

1 个答案:

答案 0 :(得分:0)

当您向spark集群提交多个作业时,Application master / resource-manager会自动并行调度作业。 (因为火花在纱线顶部)。

你不需要为此做任何额外的安排。

对于您展示的场景,您可以在一个火花作业中读取所有不同的文件。

相信我,由于Spark的懒惰评估/ DAG优化和RDD转换(逻辑/物理计划),不同文件和字数的读取将同时进行。

您可以将单个作业中的所有文件读取为:

sc.wholeTextFiles("<folder-path>")

folder-path是所有文件所在的父目录。