什么因素同时影响多少火花工作

时间:2016-01-27 15:07:17

标签: apache-spark

我们最近设置了提交火花作业的Spark Job Server。但我们发现我们的20个节点(每个节点8个核心/ 128G内存)火花群只能同时运行10个火花作业。

有人可以分享一些详细信息,了解哪些因素会影响同时运行多少个火花作业?我们如何调整conf以便我们可以充分利用集群?

2 个答案:

答案 0 :(得分:1)

问题缺少一些上下文,但首先 - 似乎 Spark Job Server 限制了并发作业的数量(与Spark本身不同,后者限制了任务的数量,不是工作):

来自application.conf

 # Number of jobs that can be run simultaneously per context
 # If not set, defaults to number of cores on machine where jobserver is running
 max-jobs-per-context = 8

如果这不是问题(您将限制设置得更高,或者使用多个上下文),则群集中的核心总数(8 * 20 = 160)是最大并发数任务。如果每个作业创建了16个任务,Spark会将下一个传入作业排队,等待CPU可用。

Spark为输入数据的每个分区创建一个任务,并根据磁盘上输入的分区或通过调用repartition或{{1来确定分区数在RDD / DataFrame上手动更改分区。对多个RDD(例如coalesce)进行操作的其他一些操作也可能会更改分区数。

答案 1 :(得分:0)

某些可能会限制您所看到的并行性的事情:

  • 如果您的作业仅包含地图操作(或其他无混乱操作),则它将限制为您拥有的数据分区数。因此,即使您有20个执行程序,如果您有10个数据分区,它也只会生成10个任务(除非数据是可拆分的,例如镶木地板,LZO索引文本等)。
  • 如果您正在执行take()操作(没有shuffle),它只执行一个指数,只使用一个任务然后增长,直到它收集足够的数据来满足take操作。 (Another question similar to this

您可以分享有关工作流程的更多信息吗?这将有助于我们诊断它。