首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花驱动器内存计算

火花驱动器内存计算
EN

Stack Overflow用户
提问于 2018-12-05 12:01:18
回答 2查看 4.9K关注 0票数 1

我知道如何计算执行器核心和memory.But,谁能解释spark.driver.memory是基于什么基础计算的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-05 19:13:40

Dataset的操作(如collect take )需要将所有数据移动到应用程序的驱动进程中,在非常大的dataset上这样做可能会使驱动进程与OutOfMemoryError崩溃。

当您将大量卷收集到驱动程序时,会增加spark.driver.memory

高性能火花由Holden Karau和Rachel Warren (O‘’Reilly) 星火查询的大部分计算工作是由执行者执行的,因此增加驱动程序的大小很少会加快计算速度。但是,如果向驱动程序收集太多数据或执行大量本地计算,作业可能会失败。因此,增加驱动程序内存和相应的spark.driver.maxResultSize值可以防止驱动程序中的内存不足错误。 设置火花驱动程序内存的一个很好的启发方法就是最低可能的值,它不会导致驱动程序中的内存错误,也就是说,它为执行者提供了最大的可能资源。

票数 4
EN

Stack Overflow用户

发布于 2018-12-05 15:00:05

火花驱动程序内存是用于驱动进程的内存量,即运行应用程序的main()函数的进程和初始化SparkContext的进程,其格式与具有大小单位后缀("k“、"m”、"g“或"t")的JVM内存字符串的格式相同(例如512 m、2g)。

JVM内存被划分为不同的部分。在广义上,JVM内存在物理上分为两部分:年轻一代老一代

年轻一代是创建所有新对象的地方。填充年轻一代时,将执行垃圾收集。这种垃圾收集被称为小GC。

老一代内存包含经过多次小GC后存活很长时间的对象。通常,当旧一代内存满时,垃圾回收就会执行。老一代垃圾收集被称为主要GC,通常需要更长的时间。

Java垃圾收集是标识并从内存中删除未使用对象的过程,以及分配给在未来处理中创建的对象的空闲空间的过程。java编程语言的最佳特性之一是自动垃圾收集,与其他编程语言(如C)不同,C语言中的内存分配和去分配是一个手动过程。

垃圾收集器是在后台运行的程序,它查看内存中的所有对象,找出程序的任何部分没有引用的对象。所有这些未引用的对象都将被删除,空间将被重新分配给其他对象。

来源:

https://spark.apache.org/docs/latest/configuration.html

https://www.journaldev.com/2856/java-jvm-memory-model-memory-management-in-java#java-memory-model-8211-permanent-generation

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

https://stackoverflow.com/questions/53631853

复制
相关文章

相似问题

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