emr-5.4.0(Spark 执行器内存分配问题)

emr-5.4.0 (Spark executors memory allocation issue)

我使用下面的配置

创建了一个带有 1 个主节点和 2 个核心到 运行 执行器的 spark 集群(学习所以没有创建高内存-cpu 集群)

硕士:Running1m4.large(2 核,8GB) Core:Running2c4.large(2 核,3.5 GB) Hive 2.1.1、Pig 0.16.0、Hue 3.11.0、Spark 2.1.0、Sqoop 1.4.6、HBase 1.3.0

当 pyspark 运行 低于错误时 所需的执行程序内存 (1024+384 MB) 高于此集群的最大阈值 (896 MB)!请检查 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.

的值

在尝试增加 yarn-site.xml 配置之前,想知道为什么当主节点有 8GB 而工作节点各有 3.5GB 时,EMR 仅将 896MB 作为限制。

资源管理器 URL(对于 master- http://master-public-dns-name:8088/)显示 1.75 GB,而虚拟机的内存为 8GB。是hbase还是其他sws占用内存太大?

如果有人遇到类似问题,请分享您对 EMR 设置低默认值的原因的看法。谢谢!

它实际上不是 EMR 的 属性,而是 YARN 的,它是 EMR 上的资源管理器 运行ning。

我个人对 YARN 的看法是,它确实是为管理长 运行ning 集群而构建的,这些集群不断地接受它必须同时 运行 的各种工作。在这些情况下,YARN 只为每个作业分配一小部分可用内存是有意义的。

不幸的是,当涉及到特定用途的集群时(例如:"I will just spin up a cluster run my job and terminate the cluster again"),这些 YARN 的默认值简直令人讨厌,您必须配置一堆东西才能​​使 YARN 以最佳方式利用您的资源.但是 运行在 EMR 上,这是我们这些天遇到的问题,所以我们必须忍受它...

Before trying to increase yarn-site.xml config , curious to understand why EMR is taking just 896MB as limit when master has 8GB and worker node has 3.5GB each.

如果您 运行 使用 yarn 集群模式(您可能正在使用)激发作业,执行程序将 运行 在核心和主内存上,将不会被使用。

现在,尽管您的 CORE EC2 实例 (c4.large) 有 3.75 GB 可供使用,EMR 将 YARN 配置为不将所有这些内存用于 运行ning YARN 容器或 spark 执行器。这是因为您必须为其他永久守护进程(如 HDFS 的 datanode 、YARN 的 nodemanager 、EMR 自己的守护进程等)留出足够的内存。根据您提供的应用程序)

EMR 确实在该页面上发布了它为所有实例类型设置的默认 YARN 配置:http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hadoop-task-config.html

c4.large

Configuration Option    Default Value   
mapreduce.map.java.opts -Xmx717m    
mapreduce.map.memory.mb 896
yarn.scheduler.maximum-allocation-mb    1792
yarn.nodemanager.resource.memory-mb 1792

因此,yarn.nodemanager.resource.memory-mb = 1792,这意味着 1792 MB 是将分配给具有 3.75 实际内存的核心节点上的 YARN 容器的物理内存。此外,检查 spark-defaults.xml,其中 EMR 有一些 spark 执行程序内存的默认值。这些是默认值,当然您可以在使用 EMR 的配置 API 启动集群之前更改它们。但请记住,如果您为 YARN 容器过度配置内存,您可能会饿死其他一些进程。

鉴于了解 YARN 配置以及 SPARK 如何与 YARN 交互非常重要。

https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml http://spark.apache.org/docs/latest/running-on-yarn.html http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/