我想要的是能够监控 Spark执行内存,而不是SparkUI 中可用的存储内存。我的意思是,执行内存不是执行内存。
通过执行内存,我的意思是:
该区域用于在执行混洗、连接、排序和聚合时缓冲中间数据。这个区域的大小是通过 spark.shuffle.memoryFraction (default0.2) 配置的。根据:Spark 1.6 中的统一内存管理
经过激烈搜索答案后,我只发现未回答的 StackOverflow 问题,仅与存储内存相关的答案或使用 Ganglia类型的模糊答案的答案,使用 Cloudera 控制台等......
似乎对 Stack Overflow 上的这些信息有需求,但还没有一个令人满意的答案。以下是 StackOverflow 在搜索监控 spark 内存时的一些顶帖
如何通过 spark 应用程序监控内存和 CPU 使用情况?
问题
星火版本> 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 的“存储”选项卡中消失或仅保留一部分时,这是否意味着它已被执行内存驱逐?