zoukankan      html  css  js  c++  java
  • 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 的指标项名称一致。

  • 相关阅读:
    liunx定时任务执行
    spark-stream简单使用案例
    spark的UDF操作,RDD与DataFrame转换,RDD DataFrame DataSet的分析
    uni-app:text文本组件是行内元素,如何让标题居中显示?
    报错:java.math.BigDecimal cannot be cast to java.lang.String(oracle数据库中的number类型数据,java查询出来的对象属性数据类型其实为BigDecimal)
    uni-app封装请求方法
    in和exists比较
    人写的SQL与机读SQL的顺序
    spring cloud组件之Feign:Feign内置的Ribbon把Rest的请求进行隐藏并基于某种负载均衡算法自动发起请求,而Feign伪装成类似Controller一样来拼接url
    spring cloud组件之Hystrixi:通过服务降级即返回一个结果来隔离访问远程服务,防止出现级联失败
  • 原文地址:https://www.cnblogs.com/fengzzi/p/10033810.html
Copyright © 2011-2022 走看看