前言
Spark的Web UI可以监控一些作业信息,但是Web UI是跟随作业的生命周期,不方便随时随地的获取作业的信息。
因此,介绍一下以下两种监控方式:Spark自身监控和打造自己的监控
官方地址:http://spark.apache.org/docs/latest/monitoring.html
一、Spark自身监控
Spark自带了history server脚本,只要我们配置好相关参数,即可保存作业信息,事后通过历史来查看作业的信息。
1、配置存储
# vi spark-default.conf 开启日志 设置日志保存目录
spark.eventLog.enabled true
spark.eventLog.dir hdfs://mycluster/log/spark-events
# vi spark-env.sh 指定历史信息的地址
export SPARK_HISTORY_OPTS = "-Dspark.history.fs.logDirectory=hdfs://mycluster/log/spark-events"
# 默认18080端口,云主机修改端口,防止被挖矿
# export SPARK_HISTORY_OPTS = "-Dspark.history.fs.logDirectory=hdfs://mycluster/log/spark-events -Dspark.history.ui.port=123456"
2、开启服务
# jps ==> HistoryServer
./sbin/start-history-server.sh
3、Web UI查看:master:18080
二、打造自己的监控
虽然Spark提供了REST API,但是我们使用SparkListener来监控
1、继承SparkListener,实现其方法,可以拿到很多作业信息,把信息持久化到DB
import com.wsd.spark.utils.DBUtils
import org.apache.spark.SparkConf
import org.apache.spark.internal.Logging
import org.apache.spark.scheduler._
import org.json4s.DefaultFormats
import org.json4s.jackson.Json
import scala.collection.JavaConverters._
import scala.collect