根据Spark
的最新版本,shuffle behavior
发生了很大变化。
问题:
SparkUI
已停止显示spill
是否发生(&多少)。在我的一个实验中,我试图模拟一个执行器上的shuffle写入超过“JVM Heap Size” * spark.shuffle.memoryFraction * spark.shuffle.safetyFraction
(基于article)但没有看到任何相关的磁盘溢出日志的情况。有没有办法获取这些信息?
PS :请原谅这听起来像理论上的问题。
答案 0 :(得分:4)
With Spark 1.6.0,内存管理系统已更新。简而言之,不再有专用的缓存/随机存储器。所有内存都可用于任一操作。从发行说明
自动内存管理:Spark 1.6的另一个性能提升领域来自更好的内存管理。在Spark 1.6之前,Spark将可用内存静态划分为两个区域:执行内存和缓存内存。执行内存是用于排序,散列和重排的区域,而缓存内存用于缓存热数据。 Spark 1.6引入了一个新的内存管理器,可以自动调整不同内存区域的大小。运行时根据正在执行的应用程序的需要自动增长和缩小区域。对于许多应用程序,这将意味着可用于连接和聚合等运营商的可用内存的显着增加,而无需任何用户调整。
This jira ticket给出了变更的背景推理,this paper深入讨论了新的内存管理系统。