我是否正确理解了客户端模式的文档?
spark.driver.memory
+spark.yarn.am.memory
必须小于计算机的内存?客户端模式与驱动程序在应用程序主程序中运行的集群模式相反?
是的,当Spark应用程序在纱线上部署时
在客户端模式下,驱动程序和应用程序主程序是独立的进程,因此spark.driver.memory
+spark.yarn.am.memory
必须小于机器的内存?
不,在客户机模式下,驱动程序和AM是独立的进程,存在于不同的机器中,所以内存不需要合并,但是spark.YARN.AM.memory
+的一些开销应该小于纱线容器内存(
YARN.nodemanager.resource.memory-mb
)。如果超过这个值,Yarn的资源管理器将杀死容器。
在客户端模式下,驱动程序内存不包括在应用程序主内存设置中吗?
这里spark.driver.memory
必须小于启动spark应用程序的机器中的可用内存。
但是,在集群模式下,请使用spark.driver.memory
而不是spark.yarn.am.memory
。
我使用了Spark 2.1.1,并升级到了最新版本2.4.4。我从Spark UI观察到驱动程序内存在不断增加,在长时间运行之后,我出现了以下错误:java。lang.OutOfMemoryError:超出GC开销限制 在Spark 2.1.1中,驱动程序内存消耗(存储内存选项卡)极低,在运行ContextCleaner和BlockManager后,内存正在减少。 此外,我测试了Spark版本2.
我正在对YARN上的Spark作业进行一些内存调优,我注意到不同的设置会给出不同的结果,并影响Spark作业运行的结果。但是,我很困惑,不明白为什么会这样,如果有人能给我一些指导和解释,我会很感激。 我将提供一些背景资料和张贴我的问题和描述案例,我已经经历了他们在下面。 我的环境设置如下: 存储器20G,每个节点20个vCore(共3个节点) Hadoop 2.6.0 火花1.4.0 我的代码对R
spark-defaults.conf中没有任何内容,以编程方式初始化spark上下文的代码是: 在所有这些之后,Spark UI的Environment选项卡的Spark.driver.maxResultSize为10G,Spark.driver.memory为20G,但是驱动程序的存储内存的executors选项卡显示为0.0B/4.3GB。 (请注意:我以前的Spark.Driver.Mem
我是Spark的初学者,我正在运行我的应用程序,从文本文件中读取14KB的数据,执行一些转换和操作(收集、收集AsMap),并将数据保存到数据库 我在我的macbook上本地运行它,内存为16G,有8个逻辑核。 Java最大堆设置为12G。 这是我用来运行应用程序的命令。 bin/spark-submit-class com . myapp . application-master local[*
null null 为了进行简单的开发,我使用在独立集群模式下(8个工作者、20个内核、45.3G内存)执行了我的Python代码。现在我想为性能调优设置执行器内存或驱动程序内存。 在Spark文档中,执行器内存的定义是 每个执行程序进程使用的内存量,格式与JVM内存字符串相同(例如512M、2G)。
我正在通过阅读高性能Spark来学习如何配置Spark应用程序,其中提到的一句话让我感到困惑: 根据我的经验,设置Spark驱动程序内存的良好启发式方法只是不会导致驱动程序内存错误的最低可能值,即为执行程序提供最大可能的资源。 我的理解是驱动程序存在于它自己的节点中,而执行程序独立存在于工作节点上。我本以为我可以最大限度地利用驱动程序内存,而不必担心它会影响执行程序。 这本书的建议是真的吗?如果是