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中查询出端口号码。

1536549-20181128182209695-2131588277.png

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=OperatingSystemSystemCpuLoad系统CPU使用率
java.lang:type=OperatingSystemProcessCpuLoad进程CPU使用率
java.lang:type=OperatingSystemFreePhysicalMemorySize空闲物理内存

JVM监控指标

此指标项适用于Master、Worker、app的Driver和Executor的监控。

objectName指标项说明
metrics:name=jvm.total.usedValueJVM的内存使用大小
metrics:name=jvm.PS-Scavenge.countValueGC次数

Master监控指标

objectName指标项说明
metrics:name=master.aliveWorkersValue可使用的Woker数量
metrics:name=master.appsValuespark的app数量
metrics:name=master.waitingAppsValue等待的app数量

Worker监控指标

objectName指标项说明
metrics:name=worker.memFree_MBValueworker的空闲内存
metrics:name=worker.coresFreeValueworker空闲的core数量
metrics:name=worker.executorsValueworker的正在使用的executor的数量
metrics:name=worker.memUsed_MBValueworker的已使用的内存
metrics:name=worker.coresUsedValueworker的已使用的core的数量

Driver和Executor的监控

从Driver和Executor的端口中,根据app的ID获取到与这个app的所有指标,如下图所示:
1536549-20181128182143060-1700953686.png
1536549-20181128182151608-2031653591.png

类型objectName指标项说明
Driver<app-ID>.driver.XXXValueapp-ID的spark程序的driver情况
Excutor<app-ID>.0.XXXValueapp-ID的spark程序的executorID为0的情况

ps: XXX 的具体名称与以上 非Master和Worker 的指标项名称一致。

转载于:https://www.cnblogs.com/fengzzi/p/10033810.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值