什么是spark UI事件时间轴中的调度程序延迟

时间:2015-07-23 04:39:34

标签: apache-spark

我正在使用YARN环境来运行spark程序, 选项--master yarn-cluster

当我打开一个spark应用程序的应用程序主人时,我在一个阶段看到了很多Scheduler Delay。其中一些甚至超过10分钟。我想知道它们是什么以及为什么需要这么长时间?

更新: 通常,在执行程序真正开始执行任务之前,像aggregateByKey这样的操作会花费更多的时间(即调度程序延迟)。为什么?

2 个答案:

答案 0 :(得分:13)

打开"显示其他指标" (单击向右指向的三角形使其指向下方)并将鼠标悬停在" Scheduler Delay"的复选框上。它显示了这个工具提示:

  

调度程序延迟包括将任务从调度程序发送到执行程序的时间,以及将任务结果从执行程序发送到执行程序的时间   调度程序。如果调度程序延迟很大,请考虑减少   任务规模或减少任务结果的大小。

调度程序是主服务器的一部分,它将作业划分为任务阶段,并与底层集群基础结构协同工作,以便将它们分布在集群中。

答案 1 :(得分:1)

查看TaskSetManager的课程评论:

..在TaskSchedulerImpl中的单个TaskSet中安排任务。此类跟踪每个任务,如果失败(最多有限次数)则重试任务,并通过延迟调度处理此TaskSet的 ocality-aware scheduling ...

我认为这是Matei Zaharia工作的下一篇论文的结果(Databricks的联合创始人和首席技术专家,也开发了Spark):https://cs.stanford.edu/~matei/

因此,Spark正在检查挂起任务的分区的位置。如果地点级别较低(例如,不在本地jvm上),则任务不会被直接杀死或忽略,而是获得启动延迟,这是公平的。