我使用emr5.18运行spark任务。以下是设置:
由于任何原因,emr都无法检测工作节点上的所有可用内存。我没有在emr配置部分添加任何内容,都是默认设置。
知道是什么原因吗?谢谢。
编辑:关于 yarn.nodemanager.resource.memory-mb
. 在用户界面上显示 28672
但是在 yarn-site.xml
是的 352768
以下是安装的应用程序列表: Hive 2.3.3, Pig 0.17.0, Hue 4.2.0, Spark 2.3.2, Ganglia 3.7.2, Presto 0.210, Livy 0.5.0, Zeppelin 0.8.0, Oozie 5.0.0
edit2:原因似乎是我安装了hbase,但现在的问题是如何重新分配内存。
2条答案
按热度按时间tvokkenx1#
在rm屏幕中,单击每个节点的http地址链接以转到每个节点管理器的web ui。
在那里,单击“工具”>“配置”,然后找到
yarn.nodemanager.resource.memory-mb
设置。这应该指示分配给该节点上的yarn nodemanager的内存量。emr根据ec2示例类型以及是否安装了hbase来设置默认值。它们列在亚马逊的在线文档中:
您可以设置配置变量来优化mapreduce作业的性能。。。默认值根据集群中使用的节点的ec2示例类型而变化。hbase在使用amazon emr 4.6.0及更高版本时可用。安装hbase时使用不同的默认值。
另一个页面提供了几种改变emr集群默认值的方法。
mzmfm0qo2#
emr上的spark内存是按Yarn分配的,因为emr不仅适用于Yarn应用,还可以有许多其他不使用Yarn的应用。因此,默认情况下,emr不允许将整个内存用于yarn,但它大约占emr示例的75%。看看这个和这个。
在第二个链接上,支持一个选项
这就是你想要的。使用此选项,可以使用最大化的资源分配。以这种方式创建emr时设置此值。
aws也注意到了这种影响:
将maximizeresourceallocation属性设置为true或false。如果为true,amazon emr会根据集群硬件配置自动配置spark默认属性。