Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Amazon EMR 5.0上的spark submit executor内存问题_Apache Spark_Amazon Ec2_Amazon Emr - Fatal编程技术网

Apache spark Amazon EMR 5.0上的spark submit executor内存问题

Apache spark Amazon EMR 5.0上的spark submit executor内存问题,apache-spark,amazon-ec2,amazon-emr,Apache Spark,Amazon Ec2,Amazon Emr,我启动了一个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)!请检查 '

我启动了一个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)!请检查 '纱线.调度程序.最大分配mb'和/或 '纱线.节点管理器.资源.内存mb'

这是一个全新的EMR 5集群,具有一个主m3.2x大型系统和两个核心m3.xlarge系统。所有内容都应设置为默认值。我目前是此群集上唯一运行一个作业的用户

如果我将执行器内存从2g降低到1500m,它就会工作。这似乎太低了。EC2 m3.xlarge服务器具有15GB的RAM。这些是Spark worker/executor机器,它们没有其他用途,因此我希望尽可能多地将其用于Spark

有人能解释一下我是如何从拥有15GB的EC2 worker实例到只分配1.5GB的Spark worker实例的

在[我看到在安装了HBase的情况下,Thread.nodemanager.resource.memory-mb的EC2 m3.xlarge默认值为11520MB和5760MB。我没有使用HBase,但我相信它安装在我的群集上。删除HBase会释放大量内存吗?这是
Thread.nodemanager.resource.memory mb
为可用内存设置最相关的设置吗奥莉

当我告诉spark submit
——执行器内存时,是每个内核还是整个工作进程的内存

当我得到错误
所需的执行器内存(2048+4096MB)
时,第一个值(2048)是我传递给
--执行器内存
的值,我可以更改它并看到错误消息相应地更改。第二个4096MB值是什么?我如何更改它?我应该更改它吗


我试图将此问题发布到AWS开发者论坛(),但收到错误“您的邮件配额已达到。请稍后再试。”当我还没有发布任何内容时?为什么我没有权限在那里发布问题?

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

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

一般来说,这有助于确保您充分利用集群