0

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

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

spark 在独立模式下工作... 1.4worker 节点 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 应用程序?

4

1 回答 1

0

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

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

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

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

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

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

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

于 2017-06-15T06:45:34.593 回答