首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花驱动存储器和执行器存储器

火花驱动存储器和执行器存储器
EN

Stack Overflow用户
提问于 2017-01-14 00:59:14
回答 2查看 52.6K关注 0票数 12

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

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

Java堆设置为12G。

下面是我用来运行应用程序的命令。

bin/spark提交--类com.myapp.application --主控本地*--执行器-内存2G -驱动程序-内存4G /jars/application.jar

我收到以下警告

2017-01-13 16:57:31.579执行器任务启动工人-8小时警告org.apache.spark.storage.MemoryStore -没有足够的空间来缓存rdd_57_0的内存!(迄今计算的26.4 MB )

有人能指导我这里出了什么问题,以及如何提高我的表现吗?另外,如何优化苏打溢油?这里是在我的本地系统中发生的泄漏事件的一个视图。

EN

回答 2

Stack Overflow用户

发布于 2017-01-14 03:26:51

运行内存过多的执行器通常会导致过多的垃圾收集延迟。因此,分配更多的内存不是一个好主意。因为您只有14 4GB的数据,2GB的执行器内存和4GB的驱动程序内存就足够了。分配这么多内存是没有用的。您甚至可以使用100 2GB内存运行此作业,性能将比2GB更好。

当您以纱线-群集模式运行应用程序时,驱动程序内存更有用,因为应用程序主程序运行驱动程序。在这里,您正在以本地模式运行您的应用程序,driver-memory是不必要的。您可以从作业中删除此配置。

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

代码语言:javascript
复制
Java Max heap is set at: 12G.
executor-memory: 2G 
driver-memory: 4G

总内存allotment= 16 and,而您的macbook只有16 and内存。在这里,您已经将RAM内存的全部分配给您的spark应用程序。

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

  1. 将Java分配给12 GB是没有用的。你需要把它减少到4GB或更少。
  2. 将执行器内存减少到executor-memory 1G或更少
  3. 由于您正在本地运行,请从配置中删除driver-memory

提交你的工作。一切都会顺利进行。

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

纱线执行器资源配置的火花

票数 15
EN

Stack Overflow用户

发布于 2017-01-14 03:25:46

在本地模式下,您不需要指定主模式,使用默认参数是可以的。官方网站称,“星火提交脚本被用于启动集群上的应用程序。它可以通过一个统一的界面使用星火支持的所有集群管理器,这样你就不必专门为每个应用程序配置。”.So你最好使用星星之火--在集群中提交,在本地可以使用火花-shell。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41645679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档