首页 > 解决方案 > 如何避免 spark job 工作量偏差问题

问题描述

我在火花工作工作量偏差方面存在问题。

环境设置

集群有 5 个节点,1 个主节点和 5 个工作节点(下图10.200.0.94 ~ 10.200.0.98)。

每个节点有 40 个内核(带有超线程)和 256g 内存。

火花作业设置

工作是在数百万条记录中计算异常记录。

这是近 2 ~ 3 小时后运行作业后的作业历史记录。

概述火花作业设置

可以看到,基本上有6个阶段,大部分时间落入3、4、5阶段。

让我们进入第 3 阶段(第 4 阶段和第 5 阶段的结果相似):

潜入阶段 3

显然,某些任务比其他节点花费更多的时间,例如与具有私有 ip 的节点连接的任务10.200.0.96

GC 时间似乎是合理的。

然后让我们深入到执行者视图:

executor_view

节点 96 和 98 比其他节点花费更多的任务时间。

需要注意的是,我没有使用任何repartition动作。

有人可以对此提供一些提示吗?如何避免 Spark 作业中的这种计算偏差?有什么共同的套路可以遵循吗?

标签: apache-sparkbigdatadatabase-performance

解决方案


您是否创建了依赖于其中之一的管道,您是否也在使用检查点?


推荐阅读