我想同时在四个不同的文件上运行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应用程序?
答案 0 :(得分:0)
当您向spark集群提交多个作业时,Application master / resource-manager会自动并行调度作业。 (因为火花在纱线顶部)。
你不需要为此做任何额外的安排。
对于您展示的场景,您可以在一个火花作业中读取所有不同的文件。
相信我,由于Spark的懒惰评估/ DAG优化和RDD转换(逻辑/物理计划),不同文件和字数的读取将同时进行。
您可以将单个作业中的所有文件读取为:
sc.wholeTextFiles("<folder-path>")
folder-path
是所有文件所在的父目录。