在Spark FAIR调度程序中设置正确的并行性

时间:2018-06-14 14:44:46

标签: apache-spark apache-spark-sql

我有一个I / O密集型Spark应用程序,我希望尽可能多地使用资源来写入hdfs。

我已经设置了每次执行

时设置的FAIR池
spark.sparkContext.setLocalProperty("spark.scheduler.pool", "writing_pool")
df.insertInto("table")`

这个df已经合并到10个分区,我必须编写100种这样的df(一个超过100个循环)。我并行执行这个循环。

理想情况下,如果我没有错,我必须执行100 x 10个写作任务(1000)。在我的资源设置中,我有200个执行器,每个执行器有4个核心,这意味着我可以并行执行800任务。

当我运行这份工作时,我最多可以看到4个写作工作(每个阶段有15个任务)并行运行。为什么?理论上我不能在完全使用群集的同时运行其中的80个?我在这里缺少一些配置吗?

<allocations>
  <pool name="writing_pool">
    <schedulingMode>FAIR</schedulingMode>
  </pool>
</allocations>

0 个答案:

没有答案