【问题标题】:Spark configuration issue火花配置问题
【发布时间】:2020-08-13 18:52:59
【问题描述】:

我有 10 个 M5.2xlarge 的 EC2 实例(CPU:8,内存:32g)。我正在尝试运行具有 70000 个输入文件的 Spark 作业,总大小为 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。现在我的 executor pod 失败了,因为:

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

【问题讨论】:

  • set by SparkConf: conf.set("spark.network.timeout", "600s") set by spark-defaults.conf: spark.network.timeout 600s set when calling spark-submit: --conf spark.network.timeout=600s

标签: apache-spark memory


【解决方案1】:

10 个 M5.2xlarge 实例超出了 30MB 的总数据量。可能您的意思是平均 30MB,即 70,000 x 30MB = 2.1TB,在这种情况下,尺寸是合理的。

我的第一个客人是工人太忙而无法发送心跳。可能他们在运行垃圾收集器时挂了,这通常会回到非最佳火花使用。虽然您可以尝试增加执行器上的内存(您还有 10gigs 要做),但更好的方法是重组您的处理代码,尽可能不使用那么多内存。

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 2015-02-04
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多