2017-06-15 52 views
0

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

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

火花工作在独立模式... 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秒多...... 如何运行在平行不同的文件火花应用程序?

回答

0

将多个作业提交到Spark集群时,应用程序主/资源管理器会自动并行调度作业。 (因为火花位于纱线顶部)。

你不需要为此做任何额外的调度。

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

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

您可以阅读单个作业的所有文件为:

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

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