我有10个m5.2xlarge的ec2示例(cpu:8,内存:32g)。我正在尝试运行一个Spark与70000输入文件,总大小为30 mb的工作。最初我的作业失败是因为以下错误:
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。现在我的遗嘱执行人豆荚失败了,原因是:
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
1条答案
按热度按时间avwztpqn1#
m5.2xlarge的10个示例对于30mb的总体数据量来说是一个过冲。可能您的意思是平均30mb,即70000 x 30mb=2.1tb,在这种情况下,尺寸是合理的。
我的第一个客人可能是工人们太忙了,不能发出心跳。很可能他们在运行垃圾收集器时挂断了电话,而垃圾收集器通常会返回到非最佳的spark使用状态。尽管您可以尝试增加执行器上的内存(您还有10gig要用),但更好的方法是重构处理代码,尽可能不使用那么多内存。