【问题标题】:EMR does not detect all the memoryEMR 未检测到所有内存
【发布时间】:2019-12-11 12:01:57
【问题描述】:

我使用 EMR 5.18 运行 Spark 任务。这是设置:

无论出于何种原因,EMR 都无法检测到工作节点上的所有可用内存。我没有在 EMR 配置部分添加任何内容,都是默认设置。

知道是什么原因造成的吗?谢谢。

编辑:关于yarn.nodemanager.resource.memory-mb 的值。在 UI 中显示 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 installed,但现在的问题是如何重新分配内存。

【问题讨论】:

标签: apache-spark hadoop amazon-emr


【解决方案1】:

在 RM 屏幕中,单击每个节点的 HTTP 地址链接以转到每个节点管理器的 Web UI。

在此处,单击工具> 配置,然后找到yarn.nodemanager.resource.memory-mb 设置。这应该指示在该节点上分配给 YARN NodeManager 的内存量。

EMR 设置的默认值取决于 EC2 实例类型以及是否安装了 HBase。它们列在亚马逊的online documentation

您可以设置配置变量来调整您的性能 MapReduce 作业... 默认值因 EC2 实例类型而异 集群中使用的节点。使用 Amazon 时可以使用 HBase EMR 版本 4.6.0 及更高版本。使用不同的默认值时 HBase 已安装。

Another page 提供了几种专门更改 EMR 集群默认值的替代方法。

【讨论】:

  • 好的,我从亚马逊指南中添加了一些信息,但坦率地说,我自己还没有尝试过。
【解决方案2】:

EMR 上 spark 的内存是由 yarn 分配的,因为 EMR 不仅适用于 yarn 应用程序,它还可以有很多其他不使用 yarn 的应用程序。因此,默认情况下,EMR 不允许将整个内存用于纱线,但它是 EMR 实例的大约 75%。请参阅THISTHIS

在第二个链接上,支持一个选项

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

这就是你想要的。使用此选项,您可以使用maximized resource allocation。以这种方式创建 EMR 时设置此值。

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

AWS 也注意到了效果:

将 MaximizeResourceAllocation 属性设置为 true 或 false。如果为 true,Amazon EMR 会根据集群硬件配置自动配置 spark-default 属性。

【讨论】:

  • 感谢您的回复。我知道有内存开销,但在我的情况下,一半以上的内存没有显示出来。
  • 您应该附加整个配置,我猜您设置了每个执行程序的最大内存,也可能将每个实例的执行程序数设置为 1 或其他值,我还不能告诉任何事情。
  • 正如我在问题中提到的,我什么都没设置,都是 EMR 默认值。如果有帮助,我会添加默认配置。
  • 你安装了Hbase或其他应用吗?它可以将纱线的分配内存减半。
  • 您可以手动配置纱线内存选项,但这很糟糕。默认减少内存的原因是为了确保其他应用程序可以在没有内存不足的情况下运行。但是,您安装了 Hbase 并可能同时将其与 spark 一起使用,如果您修改内存分配,则 Hbase 将无法正常工作,或者可能导致与内存相关的错误。无论如何,您只需提供您想要的解决方案即可。为yarn-site 设置配置yarn.scheduler.maximum-allocation-mb
猜你喜欢
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 2022-06-11
  • 2021-01-31
  • 2020-08-05
  • 2018-01-17
相关资源
最近更新 更多