gpt4 book ai didi

Spark 作业中的 Java 堆利用率

转载 作者:行者123 更新时间:2023-11-30 07:59:17 25 4
gpt4 key购买 nike

我正在通过 Java 运行 Spark Streaming 作业。我在 AWS 上有一个带有 cloudera 分布的 4 节点集群,其中 3 个是计算节点。当我的作业运行时,我需要记录集群的每个执行程序/节点上使用了多少 java 堆。我正在使用 getRunTime() 方法,但我得到一个我认为来自驱动程序执行的值。

有没有一种方法可以用来捕获单个堆的利用率?

最佳答案

Spark 通过 Sinks 公开此类指标.其中一个是 JMX 计数器,但您可以选择其他格式(CSV、控制台、Graphite、Ganglia、Slf4j)。这需要您在工作节点上添加一个 metrics.properties 文件。以下是 JMX 计数器的示例:

*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink

master.source.jvm.class=org.apache.spark.metrics.source.JvmSource
worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource
driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource
executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource

然后,它公开了许多指标,其中一些是:

{SparkAppId}.{ExecutorId}.jvm.heap.committed
{SparkAppId}.{ExecutorId}.jvm.heap.init
{SparkAppId}.{ExecutorId}.jvm.heap.max
{SparkAppId}.{ExecutorId}.jvm.heap.usage
{SparkAppId}.{ExecutorId}.jvm.heap.used
{SparkAppId}.{ExecutorId}.jvm.non-heap.committed
{SparkAppId}.{ExecutorId}.jvm.non-heap.init
{SparkAppId}.{ExecutorId}.jvm.non-heap.max
{SparkAppId}.{ExecutorId}.jvm.non-heap.usage
{SparkAppId}.{ExecutorId}.jvm.non-heap.used

这样您就可以监控您的应用程序堆使用情况。

关于 Spark 作业中的 Java 堆利用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39491703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com