我有10个M5.2xlarge的EC2实例(CPU: 8,内存: 32g)。我正在尝试运行一个有70000个总大小为30 Mb的输入文件的Spark作业。最初,我的作业因为下面显示的错误而失败:
Total size of serialized results of 37 tasks (1036.0 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)
因此,我将参数spark.driver.maxResultSize
添加到4 Gb。现在我的executor pods失败了,原因是:
Futures timed out after [10000 milliseconds]. This timeout is controlled by spark.executor.heartbeatInterval
下面是我的总体配置。我想遗嘱执行者的记忆有点问题。正确的配置应该是什么?
EXECUTOR_MEMORY=22g
EXECUTOR_CORES=6
NUM_EXECUTORS=5
DRIVER_MEMORY=22g
MAX_RESULT_SIZE=4g
发布于 2020-08-13 10:52:59
M5.2xlarge的10个实例对于30MB的总数据量来说是一个超量。可能您的意思是平均为30MB,即70,000 x 30MB = 2.1TB,在这种情况下,尺寸是合理的。
我的第一个客人可能是工作人员太忙了,没有时间发送心跳。可能他们在运行垃圾收集器时挂起了,这通常会返回到非最佳的spark使用率。虽然您可以尝试增加executors上的内存(您还需要10 go),但如果可能的话,更好的方法是重构您的处理代码,使其不使用那么多内存。
https://stackoverflow.com/questions/63389443
复制相似问题