我们最近设置了提交火花作业的Spark Job Server。但我们发现我们的20个节点(每个节点8个核心/ 128G内存)火花群只能同时运行10个火花作业。
有人可以分享一些详细信息,了解哪些因素会影响同时运行多少个火花作业?我们如何调整conf以便我们可以充分利用集群?
答案 0 :(得分:1)
问题缺少一些上下文,但首先 - 似乎 Spark Job Server 限制了并发作业的数量(与Spark本身不同,后者限制了任务的数量,不是工作):
# 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)
某些可能会限制您所看到的并行性的事情:
您可以分享有关工作流程的更多信息吗?这将有助于我们诊断它。