spark任务执行过程中经常性的failed但是任务并没有失败最后总能跑完

在Spark执行程序中,有时会遇到许多任务failed的现象,但最终任务仍能顺利完成。问题可能源于ExecutorLostFailure,即由于心跳超时,Master认为Executor挂掉并重新调度任务。这种情况可能是由于CPU资源耗尽、内存配置不当或GC频繁引起。解决方案包括调整Executor内存和CPU设置,优化spark.memory.storageFraction和spark.executor.heartbeatInterval等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.现象场景:在spark执行程序中会看到很多的failed但是过程能正常执行完

查看如下:ExecutorLostFailure (executor 11 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 941664 ms

表面现象的问题是直接某个机器由于心跳超时,超过一定时间没有向master发送心跳,导致master认为该机器节点挂掉,然后将任务放到别的机器上计算导致的。实际上引发没有心跳的原因有很多。具体情况具体分析。

1.该台机器任务太多cpu被占用满,导致没有资源发送心跳,这个时候就需要设置一下excutor 的内存和cpu的占用以及shul数量,查看一下yarn-site.xml的配置,看一下是否是超出了这台机器资源范围导致了这个问题,

2.该台机器分配的内存过少(堆栈内存)导致频繁gc或者写入磁盘导致时间过长,超过心跳时间导致失败。这时候直接配置

spark.yarn.executor.memoryOverhead 这个参数,增加每一个excutor的内存。或者通过spark.memory.storageFraction设置堆和栈的比平衡

3.由于计算数据量或者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值