Spark指標項監控


監控配置

spark的監控主要分為Master、Worker、driver、executor監控。Master和Worker的監控在spark集群運行時即可監控,Driver和Excutor的監控需要針對某一個app來進行監控。

如果都要監控,需要根據以下步驟來配置

  1. 修改$SPARK_HOME/conf/spark-env.sh,添加以下語句:
SPARK_DAEMON_JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false"

# JMX port to use
export SPARK_DAEMON_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS -Dcom.sun.management.jmxremote.port=8712 "
# export SPARK_DAEMON_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "

語句中有$JMX_PORT,這個的值可以自定義,也可以獲取一個隨機數作為端口號。

如果端口自定義為一個具體的值,而 spark 的 Master 和其中之一的 Worker 在同一台機器上,會出現端口沖突的情況。

  1. vim $SPARK_HOME/conf/metrics.properties

    *.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
    
  2. vim $SPARK_HOME/conf/spark-defaults.conf,添加以下項為driver和executor設置監控端口,在有程序運行的情況下,此端口會被打開。

spark.metrics.conf    /opt/bigdata/spark/conf/metrics.properties
spark.driver.extraJavaOptions    -XX:+PrintGCDetails -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.mana
gement.jmxremote.port=8712
spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana
gement.jmxremote.port=8711

在spark的Master和Worker正常運行以及spark-submit提交了一個程序的情況下,可以從linux中查詢出端口號碼。

20181105-新配置方法

組件的運行步驟

sbin/start-all.sh
1 sbin/spark-config.sh
2 bin/load-spark-env.sh
3 sbin/start-master.sh
1) sbin/spark-config.sh
2) bin/load-spark-env.sh
3) sbin/spark-damon.sh
1 > sbin/spark-config.sh
2 > bin/load-spark-env.sh
3 > ...正式啟動
4 sbin/start-slaves.sh
1) sbin/spark-config.sh
2) bin/load-spark-env.sh
3) sbin/start-slave.sh
1 > sbin/spark-config.sh
2 > bin/load-spark-env.sh
3 > sbin/spark-damon.sh
1 - sbin/spark-config.sh
2 - bin/load-spark-env.sh
3 - ...正式啟動

配置步驟

在組件的運行步驟中大量加載 sbin/spark-config.sh 和 bin/load-spark-env.sh 兩個腳本,load-spark-env.sh 中主要加載saprk的外部運行環境配置,spark-config.sh 主要加載spark運行的內部環境配置,因此,將需要修改的腳本修改在 spark-config.sh 中,修改步驟如下

1. 修改 spark-config.sh ,添加腳本
if [ "${JMX_PORT}" ]; then
  export SPARK_DAEMON_JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=${JMX_PORT}"
fi
2. 修改 start-master.sh ,添加腳本
export JMX_PORT=xxxx
3. 修改 start-slave.sh ,添加腳本
export JMX_PORT=xxxx
 測試結果:已在測試集群驗證成功

20181107-新配置方法

配置步驟

修改 $SPARK_HOME/sbin/start-master.sh 以及 start-slave.sh (所有機器)

export SPARK_DAEMON_JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port
=xxxx"

指標項整理

OS監控指標

此指標項適用於Master、Worker所在機器的監控。

objectName 指標項 說明
java.lang:type=OperatingSystem SystemCpuLoad 系統CPU使用率
java.lang:type=OperatingSystem ProcessCpuLoad 進程CPU使用率
java.lang:type=OperatingSystem FreePhysicalMemorySize 空閑物理內存

JVM監控指標

此指標項適用於Master、Worker、app的Driver和Executor的監控。

objectName 指標項 說明
metrics:name=jvm.total.used Value JVM的內存使用大小
metrics:name=jvm.PS-Scavenge.count Value GC次數

Master監控指標

objectName 指標項 說明
metrics:name=master.aliveWorkers Value 可使用的Woker數量
metrics:name=master.apps Value spark的app數量
metrics:name=master.waitingApps Value 等待的app數量

Worker監控指標

objectName 指標項 說明
metrics:name=worker.memFree_MB Value worker的空閑內存
metrics:name=worker.coresFree Value worker空閑的core數量
metrics:name=worker.executors Value worker的正在使用的executor的數量
metrics:name=worker.memUsed_MB Value worker的已使用的內存
metrics:name=worker.coresUsed Value worker的已使用的core的數量

Driver和Executor的監控

從Driver和Executor的端口中,根據app的ID獲取到與這個app的所有指標,如下圖所示:

類型 objectName 指標項 說明
Driver <app-ID>.driver.XXX Value app-ID的spark程序的driver情況
Excutor <app-ID>.0.XXX Value app-ID的spark程序的executorID為0的情況

ps: XXX 的具體名稱與以上 非Master和Worker 的指標項名稱一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM