我正在运行一个 Spark 作业,但似乎任务分配得不好(见附件)。有没有办法让任务分布更均匀?谢谢!
最佳答案
仔细查看发布的图片,我可以确定两个主要事实:
这让我想知道您的应用程序的性质。所有任务是否相同,或者其中一些任务是否需要比其他任务更多的时间来完成?如果任务是异构的,则需要更仔细地查看您的问题。想象以下场景:
Task 01: 10 seconds
Task 02: 10 seconds
Task 03: 10 seconds
Task ...
Task 20: 120 seconds
如果我们必须平均分配任务,我们会看到每个执行器总共必须处理 5 个任务。考虑到一个执行器分配了第 20 个任务,需要 120 秒才能完成,执行流程如下:
最后,用户界面将显示与您类似的结果,任务数量均匀分布,但不是实际计算时间。
Executor 01 -> tasks completed: 5 -> time: 0:50 minutes
Executor 02 -> tasks completed: 5 -> time: 0:50 minutes
Executor 03 -> tasks completed: 5 -> time: 0:50 minutes
Executor 04 -> tasks completed: 5 -> time: 2:40 minutes
虽然不一样,但在您的情况下可能会发生类似的事情。
关于apache-spark - Spark 任务似乎没有很好地分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882360/