gpt4 book ai didi

apache-spark - 触发堆内存配置和钨

转载 作者:行者123 更新时间:2023-12-04 00:34:21 27 4
gpt4 key购买 nike

我认为通过 Tungesten 项目的集成,Spark 会自动使用堆外内存。

spark.memory.offheap.size 和 spark.memory.offheap.enabled 有什么用?我是否需要在此处手动指定 Tungsten 的堆外内存量?

最佳答案

Spark/Tungsten 使用编码器/解码器将 JVM 对象表示为高度特化的 Spark SQL 类型对象,然后可以以高性能的方式对其进行序列化和操作。内部格式表示高效且对 GC 内存使用友好。

因此,即使在默认的堆上模式下运行,Tungsten 也减轻了 JVM 对象内存布局和 GC 运行时间的巨大开销。在这种模式下,Tungsten 确实出于内部目的在堆上分配对象,分配内存块可能很大,但它发生的频率要低得多,并且可以顺利地在 GC 生成过渡中幸存下来。这几乎消除了考虑将这个内部结构移出堆外的需要。

在我们开启和关闭此模式的实验中,我们并没有看到运行时间的显着改善。但是,在堆外模式下,您需要仔细设计 JVM 进程之外的内存分配。这可能会给 YARN、Mesos 等容器管理器带来一些困难,因为除了 JVM 进程配置之外,您还需要允许和计划额外的内存块。

同样在堆外模式下,Tungsten 使用 sun.misc.Unsafe,这在您的部署场景中可能不是所希望的,甚至是不可能的(例如,使用限制性的 java 安全管理器配置)。

我也在分享一个带有时间标签的视频 session talk乔什·罗森(Josh Rosen)被问到类似问题时。

关于apache-spark - 触发堆内存配置和钨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330902/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com