Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spark作业中Java堆的利用_Java_Apache Spark_Bigdata - Fatal编程技术网

spark作业中Java堆的利用

spark作业中Java堆的利用,java,apache-spark,bigdata,Java,Apache Spark,Bigdata,我正在通过Java运行Spark流媒体作业。我在AWS上有一个带有cloudera分布的4节点集群,其中3个是计算节点。当我的作业运行时,我需要记录集群的每个执行器/节点上使用了多少java堆。我使用的是getRunTime()方法,但我得到的值相信是来自驱动程序执行 是否有一种方法可以用来捕获单个堆的利用率 Spark通过公开这些指标。其中一种是JMX计数器,但您可以选择其他格式(CSV、Console、Graphite、Ganglia、Slf4j)。这要求您在工作节点上添加一个metrics

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


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

Spark通过公开这些指标。其中一种是JMX计数器,但您可以选择其他格式(CSV、Console、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
这样,您就可以监视应用程序堆的使用情况