【发布时间】:2018-07-23 21:42:47
【问题描述】:
我想要的是能够监控 Spark 执行内存,而不是 SparkUI 中可用的 存储内存。我的意思是,执行内存不是执行内存。
我的意思是执行内存:
此区域用于在执行 shuffle、join、排序和聚合时缓冲中间数据。这个区域的大小是通过 spark.shuffle.memoryFraction (default0.2) 配置的。 根据:Unified Memory Management in Spark 1.6
在密集搜索答案后,我发现除了未回答的 StackOverflow 问题、仅与存储内存相关的答案或具有模糊答案类型的答案使用 Ganglia、使用 Cloudera 控制台 等等……
在 Stack Overflow 上似乎需要此信息,但还没有一个令人满意的答案。以下是 StackOverflow 在搜索 monitoring spark memory
时的一些热门帖子Monitor Spark execution and storage memory utilisation
Monitoring the Memory Usage of Spark Jobs
SPARK: How to monitor the memory consumption on Spark cluster?
Spark - monitor actual used executor memory
How can I monitor memory and CPU usage by spark application?
How to get memory and cpu usage by a Spark application?
问题
Spark 版本 > 2.0
是否可以监控 Spark 作业的执行内存?通过监视,我的意思是至少查看已使用/可用,就像 SparkUI 的执行器选项卡中每个执行器的存储内存一样。是还是不是?
我可以用 SparkListeners (@JacekLaskowski 吗?) 历史服务器怎么样?还是唯一的方法是通过外部工具? Graphana,Ganglia,其他?如果是外部工具,您能否指出一个教程或提供一些更详细的指南?
我看到这个SPARK-9103 Tracking spark's memory usage 似乎还不能监控执行内存。这似乎也很相关SPARK-23206 Additional Memory Tuning Metrics。
-
Peak Execution memory是否是任务中执行内存使用/占用的可靠估计?例如,如果 Stage UI 显示任务在峰值使用 1 Gb,而我每个执行程序有 5 个 cpu,这是否意味着我需要每个执行程序上至少 5 Gb 的执行内存才能完成一个阶段? 我们可以使用其他代理来了解执行内存吗?
有没有办法知道执行内存何时开始占用存储内存?当我的缓存表从 SparkUI 的“存储”选项卡中消失或仅保留一部分时,是否意味着它已被执行内存驱逐?
【问题讨论】:
-
如果你在 web UI 中看到它,你可以在 SparkListeners 中看到它(因为 web UI 是一堆 SparkListeners)。我将不得不刷新我的记忆,以非常准确的语言回答这个问题。感谢您的提问!
-
@JacekLaskowski 我在 SparkUI 中看不到它。我认为 SparkListeners 中可用的东西比 SparkUI 中的要多。感谢您的光临。
标签: apache-spark memory memory-management unified-memory