Spark任务存在大量Task失败记录分享

发布时间 2024-01-09 11:23:03作者: MrSponge

最近Spark任务调度任务跑的时间比平时慢很多,查看SparkUI发现有大量的Task被异常终止,查看日志发现了有几个问题,记录一下。

根据日志,主要涉及任务被终止、YARN集群中的抢占问题以及网络连接错误。

1、任务被终止的警告:

WARN Lost task 87.0 in stage 6.0 (TID 549, ××-××-××-×××, executor 4): TaskKilled (another attempt succeeded) (org.apache.spark.scheduler.TaskSetManager)
...
WARN Lost task 19.0 in stage 6.0 (TID 494, ××-××-××-×××, executor 8): TaskKilled (another attempt succeeded) (org.apache.spark.scheduler.TaskSetManager)

这些警告表明您的Spark作业中的某些任务被终止,并且Spark正在尝试重新运行它们(因此出现“another attempt succeeded”)。这可能是由于资源约束、抢占或其他问题引起的。需要进一步调查。

2、执行器被抢占:

WARN Requesting driver to remove executor 20 for reason Container container_×××× on host: ××-××-××-××× was preempted.
...
ERROR Lost executor 20 on ××-××-××-×××: Container container_×××× on host: ××-××-××-××× was preempted.

这些警告和错误表明执行器被抢占,很可能是由于YARN集群中的资源争用。执行器被强制终止,导致任务失败。

3、连接重置错误:

WARN Exception in connection from /××-××-××-×××:×××× (org.apache.spark.network.server.TransportChannelHandler)
...
WARN Exception in connection from /××-××-××-×××:×××× (org.apache.spark.network.server.TransportChannelHandler)

这些警告表明存在网络相关问题,特别是对等方的连接被重置。这可能是由于网络问题或不稳定性引起的,可能影响Spark组件之间的通信。

解决方案:试一下加上--conf spark.network.timeout=300s和--conf spark.shuffle.consolidateFiles=false提高executor网络方面和减少文件合并开销,
加上--conf spark.sql.shuffle.partitions=240优化调整分区数,这个参数调整最好为总核数的3倍


网络没问题大话,很大概率就是资源不足了,集群能给到的资源满足不了Spark任务设置的资源大小。这边最后查了也是发现当时的core不够了。