emr不能检测所有内存

yzxexxkh  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(345)

我使用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,但现在的问题是如何重新分配内存。

tvokkenx

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集群默认值的方法。

mzmfm0qo

mzmfm0qo2#

emr上的spark内存是按Yarn分配的,因为emr不仅适用于Yarn应用,还可以有许多其他不使用Yarn的应用。因此,默认情况下,emr不允许将整个内存用于yarn,但它大约占emr示例的75%。看看这个和这个。
在第二个链接上,支持一个选项

Application Release label classification    Valid properties    When to use
Spark   spark   maximizeResourceAllocation  Configure executors to utilize the maximum resources of each node.

这就是你想要的。使用此选项,可以使用最大化的资源分配。以这种方式创建emr时设置此值。

[
  {
    "Classification": "spark",
    "Properties": {
      "maximizeResourceAllocation": "true"
    }
  }
]

aws也注意到了这种影响:
将maximizeresourceallocation属性设置为true或false。如果为true,amazon emr会根据集群硬件配置自动配置spark默认属性。

相关问题