【发布时间】:2016-12-19 17:39:18
【问题描述】:
我像这样启动一个 Python Spark 程序:
/usr/lib/spark/bin/spark-submit \
--master yarn \
--executor-memory 2g \
--driver-memory 2g \
--num-executors 2 --executor-cores 4 \
my_spark_program.py
我得到错误:
所需的执行程序内存 (2048+4096 MB) 高于最大阈值 (5760 MB) 这个集群!请检查的值 'yarn.scheduler.maximum-allocation-mb' 和/或 'yarn.nodemanager.resource.memory-mb'。
这是一个全新的 EMR 5 集群,具有一个主 m3.2xlarge 系统和两个核心 m3.xlarge 系统。一切都应该设置为默认值。我目前是唯一一个在这个集群上只运行一个作业的用户。
如果我将执行程序内存从 2g 降低到 1500m,它就可以工作。这似乎非常低。 EC2 m3.xlarge 服务器有 15GB 的 RAM。这些是 Spark 工作器/执行器机器,它们没有其他用途,所以我想尽可能多地为 Spark 使用它们。
有人能解释一下我是如何从拥有一个 15GB 的 EC2 工作器实例到能够分配一个只有 1.5GB 的 Spark 工作器的吗?
在 [http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html] 我看到 EC2 m3.xlarge 默认为 yarn.nodemanager.resource.memory-mb 默认为 11520MB 和 5760MB,安装了 HBase。我没有使用 HBase,但我相信它已安装在我的集群上。删除 HBase 会释放大量内存吗?这是yarn.nodemanager.resource.memory-mbsetting 最相关的可用内存设置吗?
当我告诉 spark-submit --executor-memory 是针对每个核心还是针对整个工作人员?
当我收到错误 Required executor memory (2048+4096 MB) 时,第一个值 (2048) 是我传递给 --executor-memory 的值,我可以更改它并查看相应的错误消息更改。第二个 4096MB 值是多少?我该如何改变呢?我应该改变它吗?
我尝试将此问题发布到 AWS 开发人员论坛 (https://forums.aws.amazon.com/forum.jspa?forumID=52) 并收到错误消息“您的消息配额已达到。请稍后再试。”当我什至没有发布任何东西的时候?为什么我没有权限在那里发布问题?
【问题讨论】:
标签: apache-spark amazon-ec2 amazon-emr