Bug现象
spark程序运行正常,但是查看web ui的时候如下图所示:
查看executor logs发现:
ERROR executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
原因分析
首先程序能够正常运行,只是发现某些executor状态为Dead了,说明该executor被移除了,至于为什么会被移除,就得理解spark的动态分区了,这部分内容请参考这篇博客。
大概的意思就是当把spark.dynamicAllocation.enabled参数设置为true的时候Spark自动根据任务的负载情况增加或减少执行者的数量。当executor空闲时间达到 spark.dynamicAllocation.executorIdleTimeout=60s的时间后,executor会被移除掉。
解决方式
- 建议忽略
如果仅仅是出现这个错误日志,那么无关紧要,因为开启动态分区有的时候对spark程序的性能是有好处的。 - 关闭动态分