Moh*_*ari 1 amazon-emr apache-spark
我创建了一个 Spark 集群(学习所以没有创建高内存 CPU 集群),有 1 个主节点和 2 个核心来使用下面的配置运行执行器
主:Running1m4.large(2 核,8GB) 核心: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”和/或“yarn.nodemanager.resource.memory-mb”的值。
在尝试增加yarn-site.xml配置之前,我想了解为什么当主节点有8GB并且工作节点各有3.5GB时EMR只以896MB作为限制。
资源管理器 URL(master- http://master-public-dns-name:8088/)显示 1.75 GB,其中 vm 内存为 8GB。hbase或其他sws是否占用过多内存?
如果有人遇到类似的问题,请分享您的见解,为什么 EMR 设置了较低的默认值。谢谢!
在尝试增加yarn-site.xml配置之前,我想了解为什么当主节点有8GB并且工作节点各有3.5GB时EMR只以896MB作为限制。
如果您使用纱线集群模式(您可能正在使用)运行 Spark 作业,则执行程序将在核心上运行,并且不会使用主内存。
现在,尽管您的 CORE EC2 实例 (c4.large) 有 3.75 GB 可供使用,但 EMR 将 YARN 配置为不使用所有这些内存来运行 YARN 容器或 Spark 执行器。这是因为你必须为其他永久守护进程留出足够的内存(例如 HDFS 的 datanode 、 YARN 的 nodemanager 、EMR 自己的守护进程等。基于你提供的应用程序)
EMR 确实发布了它为此页面上的所有实例类型设置的默认 YARN 配置:http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hadoop-task-config.html
c4.大号
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
Run Code Online (Sandbox Code Playgroud)
因此,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/
| 归档时间: |
|
| 查看次数: |
3485 次 |
| 最近记录: |