我们最近已经设置了提交火花作业的 Spark Job Server.但我们发现我们的20个节点(每个节点8个核心/ 128G内存)火花集群只能同时运行10个火花作业.
有人可以分享一些有关哪些因素会影响同时运行多少个火花作业的详细信息?我们如何调整conf以便我们可以充分利用集群?
最佳答案 问题缺少一些上下文,但首先 – 似乎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为输入数据的每个分区创建一个任务,并根据磁盘上输入的分区决定分区数,或者通过调用RDD / DataFrame上的重新分区或合并来手动更改分区.对多个RDD(例如联合)进行操作的一些其他操作也可以改变分区的数量.