【发布时间】:2016-07-17 23:53:07
【问题描述】:
所以,我尝试在 EMR 上运行我的 spark 代码,其中包含三个 m4.2xlarge 实例(一个主节点和 2 个核心节点)。
每台机器都有 32GB 内存。我一直遇到这个错误:
16/07/17 23:32:35 WARN TaskSetManager: Lost task 5.0 in stage 3.0 (TID 41, ip-172-31-55-189.ec2.internal): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
为了增加内存,我在创建 SparkContext 之前在我的 Spark 代码中使用了以下 conf 设置。
conf.set('spark.executor.instances', 2)
conf.set('spark.executor.cores', 2)
conf.set('spark.executor.memory', '12g')
conf.set('spark.yarn.driver.memoryOverhead', '0.2')
sc = SparkContext(conf=conf)
然而,我仍然得到同样的错误,表明每个执行程序增加的内存没有生效。知道我做错了什么以及如何在每个核心实例上的两个任务之间分配 32GB 内存吗?
【问题讨论】:
标签: pyspark hadoop-yarn amazon-emr