问题:Executor 心跳超时
原因1:Executor 运行时间过长
如果 Executor 的任务执行时间超过了 Spark 配置中设置的心跳超时时间,就会触发心跳超时。
解决办法:增加 Spark 配置中的心跳超时时间。
--conf spark.executor.heartbeatInterval=1200s
原因2:网络问题
Executor 与 Driver 或其他组件之间的网络连接存在问题,导致心跳消息无法及时传递或丢失。
解决办法:增加网络超时时间
--conf spark.network.timeout=1300s
注意:network.timeout的值必须大于executor.heartbeatInterval的值
原因3:Executor 资源不足
Executor 可能由于资源不足(比如内存不足)而无法及时发送心跳消息。
解决办法:调整资源分配,增加 Executor 的资源分配, 增加内存大小或核心数。
--executor-memory 4g
--executor-cores 2
原因4:Executor 进程崩溃
Executor 进程崩溃或被杀死,导致心跳消息无法发送。
解决办法是检查 Executor 进程所在节点的系统日志或 Spark 日志,查找代码问题,比如空指针异常等