【问题标题】:spark-submit executor-memory issue on Amazon EMR 5.0Amazon EMR 5.0 上的 spark-submit executor-memory 问题
【发布时间】: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


    【解决方案1】:

    是的,如果安装了 hbase,默认情况下它会使用相当多的内存。除非需要,否则不应将其放在集群上。

    如果只有 1 个核心节点,您的错误将是有意义的。 6G(4G 用于 2 个执行程序,2G 用于驱动程序)将比您的资源管理器必须分配的内存更多。使用 2 节点核心,您实际上应该能够分配 3 个 2G 执行器。 1个在有驱动的节点上,2个在另一个。

    一般来说,this sheet 可以帮助确保您充分利用集群。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 2017-10-18
      相关资源
      最近更新 更多