在Web UI中的Executors选项卡中控制内存存储是什么以及如何控制?

Akh*_*laV 3 apache-spark spark-streaming apache-spark-1.5.2

我将Spark 1.5.2用于Spark Streaming应用程序.

Web UI中"执行者"选项卡中的" 存储内存 "是什么?这是如何达到530 MB?如何改变这个价值?

在此输入图像描述

Jac*_*ski 11

注意:您使用非常非常旧且当前不受支持的Spark 1.5.2(在我发布答案后我注意到了),我的答案是关于Spark 1.6+.


存储内存的工具提示可能会说明一切:

使用的内存/用于存储数据的总可用内存,如内存中缓存的RDD分区.

Web UI中

它是SPARK-10000中引入的统一内存管理功能的一部分:整合存储和执行内存管理(引用逐字):

Spark中的内存管理目前分为两个不相交的区域:一个用于执行,一个用于存储.这些区域的大小是静态配置的,并且在应用期间是固定的.

这种方法有几个局限性.它需要用户专业知识来避免不必要的溢出,并且没有适用于所有工作负载的合理默认值.作为Spark用户,我希望Spark更智能地管理内存,因此我不需要担心如何静态分区执行(shuffle)内存分数和缓存内存分数.更重要的是,不使用缓存的应用程序仅使用堆空间的一小部分,从而导致性能欠佳.

相反,我们应该统一这两个区域,如果可能的话,让一个人借用另一个区域.

Spark属性

您可以使用spark.driver.memoryspark.executor.memorySpark属性来控制存储内存,这些属性为Spark应用程序(驱动程序和执行程序)设置整个内存空间,区域由spark.memory.fraction和控制spark.memory.storageFraction.


您应该考虑由作者Andrew Or 观看Apache Spark中的幻灯片内存管理,以及作者自己(再次)观看Deep Dive:Apache Spark内存管理视频.


您可能想要了解如何在Web UI 如何计算存储内存(在Executors选项卡中)中计算存储内存值(在Web UI和内部)?