当前位置:  开发笔记 > 编程语言 > 正文

Spark驱动程序内存和执行程序内存

如何解决《Spark驱动程序内存和执行程序内存》经验,为你挑选了1个好方法。

我是Spark的初学者,我正在运行我的应用程序从文本字段中读取14KB数据,执行一些转换和操作(收集,收集地图)并将数据保存到数据库

我在我的macbook中本地运行它有16G内存,有8个逻辑内核.

Java Max堆设置为12G.

这是我用来运行应用程序的命令.

bin/spark-submit --class com.myapp.application --master local [*] - executor-memory 2G --driver-memory 4G /jars/application.jar

我收到以下警告

2017-01-13 16:57:31.579 [Executor task launch worker -8hread] WARN org.apache.spark.storage.MemoryStore - 没有足够的空间来缓存内存中的rdd_57_0!(到目前为止计算的26.4 MB)

任何人都可以指导我这里出了什么问题,我怎样才能提高性能?还有如何优化漏斗?这是我本地系统中发生的泄漏的视图

在此输入图像描述



1> Sandeep Sing..:

运行具有太多内存的执行程序通常会导致过多的垃圾收集延迟.分配更多内存并不是神的想法.由于你只有14KB数据2GB执行器内存和4GB驱动内存绰绰有余.没有使用分配这么多的内存.您可以使用100MB内存运行此作业,性能将优于2GB.

运行应用程序时,驱动程序内存更有用,在纱线群集模式下,因为应用程序主机运行驱动程序.在这里,您driver-memory无需在本地模式下运行应用程序.您可以从作业中删除此配置.

在您的应用程序中,您已分配

Java Max heap is set at: 12G.
executor-memory: 2G 
driver-memory: 4G

总内存分配= 16GB,你的macbook只有16GB内存.在这里,您已将总RAM内存分配给spark应用程序.

这个不好.操作系统本身消耗大约1GB内存,您可能运行其他也消耗RAM内存的应用程序.所以在这里你实际上分配了更多的内存.这是您的应用程序抛出错误的根本原因Not enough space to cache the RDD

    没有使用将Java堆分配到12 GB将其重新设置为4GB或更少.

    将执行程序内存减少到executor-memory 1G或更少

    由于您在本地运行,请driver-memory从配置中删除.

提交你的工作.它会顺利运行.

如果您非常希望了解火花记忆管理技术,请参阅这篇有用的文章.

Spark on yarn executor资源分配


由于应用程序是在本地模式下运行的,您是否认为执行程序内存对驱动程序jvm进程中的工作者没有影响?
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有