有没有办法使用 pure Spark 监控 Apache Spark 的 CPU 利用率?
Ganglia 似乎可以从外部做到这一点。
我想知道 Spark 内部是否有任何内容(例如 Spark 向 UI 报告的信息或指标信息)可以为您提供像 Linux top 那样的核心利用率。不是每个执行器在某个时间使用了多少个核心 (coreUsed),而是这些核心的利用率如何。
org.wisdom-framework 似乎可以提供 CPU 利用率信息,并且很容易添加到 Spark 中。看看这个:https://github.com/wisdom-framework/wisdom/blob/master/extensions/wisdom-monitor/src/main/java/org/wisdom/monitor/extensions/dashboard/CpuGaugeSet.java
这就是我所做的:
在./core/pom.xml中的依赖部分末尾添加以下信息:
<dependency>
<groupId>org.wisdom-framework</groupId>
<artifactId>wisdom-monitor</artifactId>
</dependency>
并将它们添加到 ./pom.xml 中的依赖项部分的末尾:
<dependency>
<groupId>org.wisdom-framework</groupId>
<artifactId>wisdom-monitor</artifactId>
<version>0.9.1</version>
</dependency>
在 org/apache/spark/metrics/source/JvmSource.scala 中注册 cpuGaugeSet
import org.wisdom.monitor.extensions.dashboard.CpuGaugeSet
metricRegistry.registerAll(new CpuGaugeSet)
再次激发火花。当您通过执行程序和驱动程序的指标报告 jvm 信息时,您将看到另外三个与 CPU 利用率相关的统计文件。
考虑使用 Ganglia 或其他外部监控工具/框架,您的方向是正确的。
Spark Scheduler 跟踪任务/作业进度 .. 但不跟踪资源利用率。 Spark 执行器允许任务运行 - 并报告成功/失败 - 但也不自我监控资源利用率。