如何计算YARN ResourceManager的总内存?

时间:2018-05-21 15:19:49

标签: apache-spark pyspark amazon-emr

我使用aws emr和YARN-client在1个MasterNode,3个WorkerNode配置中运行Spark集群,MasterNode是客户端计算机。所有4个节点都有8GB内存和4个内核。鉴于硬件设置,我设置了以下内容:

spark.executor.memory = 5G
spark.executor.cores = 3
spark.yarn.executor.memoryOverhead = 600

使用该配置,Yarn的ResourceManager识别的预期Total Memory是否为15GB?它显示18GB。我在运行Spark应用程序时只看到Yarn使用高达15GB的内容。是{15}来自spark.executor.memory * 3 nodes

我想假设YARN总记忆是由spark.executor.memory + spark.yarn.executor.memoryOverhead计算的,但我无法在任何地方找到记录。找到确切数字的正确方法是什么?

我应该能够将spark.executor.memory的值增加到6G吗?我这样设置过去的错误。我需要设置其他配置吗?

编辑 - 所以它看起来像workerNodes' yarn.scheduler.maximum-allocation-mb的值为6114或6GB。这是EMR为实例类型设置的默认值。而且由于6GB * 3 = 18GB,这可能是有道理的。我想重新启动Yarn并将该值从6GB增加到7GB,但由于这是一个正在使用的集群,所以我想我的问题仍然存在。

1 个答案:

答案 0 :(得分:1)

  

我想假设YARN总内存是由spark.executor.memory + spark.yarn.executor.memoryOverhead计算的,但是我无法在任何地方找到它。找到确切数字的正确方法是什么?

这是正确的,但倒退说。 YARN的总内存独立于您为Spark设置的任何配置。 onStart()控制YARN可以访问的内存量,并且可以找到here。要将所有可用内存与Spark一起使用,您可以将yarn.scheduler.maximum-allocation-mb + spark.executor.memory设置为等于spark.yarn.executor.memoryOverhead。有关调整spark作业的详细信息,请参阅here;有关计算配置的信息,请参阅this spreadsheet

  

我应该可以将spark.executor.memory的值增加到6G吧?

如果yarn.scheduler.maximum-allocation-mb为yarn.scheduler.maximum-allocation-mb,则根据电子表格,spark.executor.memory的上限为5502M。手动计算,6114M默认为.9 * 6114  spark.executor.memoryOverhead,最少executorMemory * 0.10source