spark如何处理不等节点性能?

时间:2016-05-18 08:39:49

标签: apache-spark

假设我有一个运行超过1000个数据输入的map函数,对于快速核心,每个需要1分钟,对于慢速核心,每个需要4分钟。假设我有100个核心,50个是快速的,50个是慢的。

如果spark分别为每个核心分配10个任务,那么快速核心将比慢核心更早完成分配的任务。主人是否知道这一点并将任务重新分配给现在免费的快速核心?换句话说,快速核心是否被最佳地用于最佳的总体执行时间?或者快速核心完成,并在主设备等待慢速核心完成时处于空闲状态?

如果有帮助,我正在运行Spark 1.6。

谢谢!

1 个答案:

答案 0 :(得分:2)

任务一次安排一个。如果一个任务需要一个核心需要10秒,而另一个核心任务需要30秒,那么第一个核心将在第二个核心执行一项任务时执行三项任务。调度程序不会为每个核心放置10个任务并等待它们完成所有10个任务:它为每个核心分配一个任务,然后在核心完成时分配另一个任务。根据排队理论,这比每个节点有一个单独的任务队列要快得多 - 这也是众所周知的,因此除非存在明显的情有可原情况,否则没有好的调度程序每个核心都会有单独的队列。