监控配置

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 的指标项名称一致。

Spark指标项监控的更多相关文章

  1. Flume监控指标项

    配置监控 1.修改flume-env.sh export JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmx ...

  2. hbase 监控指标项

    名词解释 JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项 GC:Garbage Collection,垃圾收集,垃圾回收机制 指标项来源 主机名 u ...

  3. Hbase监控指标项

    名词解释 JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项 GC:Garbage Collection,垃圾收集,垃圾回收机制 指标项来源 主机名 u ...

  4. kafka监控指标项

    监控配置 ​ kafka基本分为broker.producer.consumer三个子项,每一项的启动都需要用到 $KAFKA_HOME/bin/kafka-run-class.sh 脚本,在该脚本中 ...

  5. Hadoop监控指标项

    配置 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh # 在配置namenode和datanode时都会有用到JMX_OPTS的代码,是为了减少重复提取出的公共代码 e ...

  6. 【0.2】【MySQL】常用监控指标及监控方法(转)

    [MySQL]常用监控指标及监控方法 转自:https://www.cnblogs.com/wwcom123/p/10759494.html  对之前生产中使用过的MySQL数据库监控指标做个小结. ...

  7. 【Graphite】使用dropwizard.metrics向Graphite中写入指标项数据

    graphite 定时向Graphite中写入指标项数据,指标项模拟个数3000个 使用的类库 官方文档   dropwizard的github地址 Metric官方文档 metrics.dropwi ...

  8. SOAPUI 压力测试的指标项说明

      soapUI Pro指标项说明:   Test Step Sets the startup delay for each thread (in milliseconds), setting to ...

  9. 【MySQL】常用监控指标及监控方法

    对之前生产中使用过的MySQL数据库监控指标做个小结.  指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的 ...

随机推荐

  1. Docker 容器简介与部署

    关于Docker容器技术 参考文献:<docker 从入门到精通> Docker容器简介 Docker的构想是要实现 "Build,Ship and Run Any App,An ...

  2. python网络爬虫(6)爬取数据静态

    爬取静态数据并存储json import requests import chardet from bs4 import BeautifulSoup import json user_agent='M ...

  3. vue路由(基于VScode开发)

    index.js如果在router目录下,代表这个js文件只是路由使用 main.js中为全局,需要引入使用到的组件,一般vue中不用写东西vue中el挂载哪个就哪个组件为根目录,传值数据绑定的时候在 ...

  4. postgres外部表

    在创建外部表的时候遇见: CREATE EXTENSION file_fdw;2018-12-21 17:32:23.822 CST [31237] ERROR:  could not open ex ...

  5. Js 将图片的绝对路径转换为base64编码(3)

    图片文件改变一方法:$('#file').change(function(){var oFReader = new FileReader();oFReader.readAsDataURL(this.f ...

  6. Delphi 数组与记录类型

  7. 26、Nginx Uwsgi代理

    1.Uwsgi代理基本概述 cgi.fastcgi.wsgi.uwsgi python框架 Django是一个开放源代码的web的框架 Flask是一个使用python编写的轻量级web应用框架 2 ...

  8. centos 7 Network 脚本

    #!/bin/sh #主动启动网卡 interface=$() ifup $interface #获取当前网络信息 default_route=$(ip route show) default_int ...

  9. traceback:让你更加灵活地处理python的异常

    异常 异常在python中是屡见不鲜了,程序在执行到某一行代码时,发现有问题,比如数组索引越界,变量没有定义啊等等,此时就会抛出异常 捕获异常 在python,一般都是使用try···except来对 ...

  10. or/in/union与索引优化

    假设订单业务表结构为: order(oid, date, uid, status, money, time, …) 其中: oid,订单ID,主键 date,下单日期,有普通索引,管理后台经常按照da ...