泄漏
在长时间运行的阶段,首先要查看是否有 溢出。
在阶段页面顶部,你将看到详细信息,其中包括有关溢出的统计信息:
当 Spark 内存不足时,会发生溢出。 它开始将数据从内存移到磁盘,这可能相当昂贵。 在 数据洗牌期间,这是最常见的。
如果您看不到关于溢出的任何统计数据,这意味着该阶段没有数据溢出。 如果阶段有一些泄漏,请参阅 本指南 ,了解如何处理由混排引起的溢出。
偏斜
我们要研究的下一件事是是否存在 倾斜。 倾斜是指一个或少量几个任务比其他任务花费的时间长得多。 这会导致群集利用率低下和作业时间变长。
向下滚动到 摘要指标。 我们主要关注的是最大持续时间明显高于第75百分位的持续时间。 以下屏幕截图显示了一个正常的阶段,其中第 75 百分位和 最大值 相同:
如果“最大”持续时间比第 75 百分位持续时间多 50%,则可能会遇到倾斜问题。
如果看到倾斜,请 在此处了解倾斜修正步骤。
无倾斜或溢写
如果未看到倾斜或溢出,请返回到作业页,大致了解发生了什么。 将页面滚动到顶部,然后单击关联的职位 ID:
如果阶段不存在数据溢出或数据倾斜,请参阅 Spark 阶段高 I/O,了解下一步骤。