如何避免火花作业工作量偏差问题

时间:2018-12-07 12:23:52

标签: apache-spark bigdata database-performance

关于火花作业工作量偏差,我有一个问题。

环境设置

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

每个节点具有40个内核(具有hyperthreading)和256g内存。

火花作业设置

  • num-executors 5
  • executor-cores 5
  • 驱动程序内存16克
  • 执行者内存20g

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

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

overview-spark-job-setting

我们可以看到,基本上有6个阶段,大部分时间处于第3、4和5阶段。

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

dive_into_stage_3

很显然,某些任务比其他节点要花费更多的时间,例如,带有专用IP 10.200.0.96的节点所附加的任务。

GC时间似乎合理。

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

executor_view

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

请注意,我没有使用任何repartition动作。

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

1 个答案:

答案 0 :(得分:0)

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