我们在运行spark作业的时候,一定会通过某些途径监控作业的运行情况,我们常用的就是通过WebUI界面进行监控。
默认情况下,每个SparkContext都会在4040端口上启动Web UI,用来展示与应用相关的信息。包括:
- 经历了哪些stage,运行了哪些task
- RDD所占空间以及memory使用情况的摘要
- 环境相关信息
- 正在运行的excutor的相关信息
你要在Web浏览器中打开http://<driver-node>:4040即可访问此界面。如果多个SparkContexts在同一主机上运行,端口会依次递增(不必记忆,在提交job时,控制台会提示你哪个是该应用的Web UI的URL)。
注意!这个端口只在应用的生命周期可以访问!也就是说,如果这个job是在半夜跑的,你要是指着这东西的话,你得申请夜班~哈哈
Spark也给我们提供了查看历史job的UI界面,在提交job前将spark.eventLog.enabled设置为true即可(spark-defaults.conf中将注释打开就好)
开启查看结束job模式
一、创建日志存放目录
hdfs dfs -mkdir /g6_hadoop
二、修改spark-defaults.conf
开启存放job日志模式并指定持久化日志目录
首先查看你hadoop的core-site.xml 找到你的命名空间 (如果你不是HA,那么就改成自己的namenode节点URL)
<property>
<name>fs.defaultFS</name>
<value>hdfs://ruozeclusterg6</value>
</property>
修改/spark-defaults.conf
vim $SPARK_HOME/conf/spark-defaults.conf
######
# Example:
# spark.master spark://master:7077
spark.eventLog.enabled true #设置为true
spark.eventLog.dir hdfs://ruozeclusterg6:8020/g6_direcory #修改成刚刚创建的文件夹路径 注意改成你的命名空间
# spark.serializer org.apache.spark.serializer.KryoSerializer
# spark.driver.memory 5g
# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
三、修改spark-env.sh
vim $SPARK_HOME/conf/spark-env.sh
末尾添加
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://ruozeclusterg6:8020/g6_direcory"##注意改成你的hostname
四、开启服务
cd $SPARK_HOME
./sbin/start-history-server.sh
五、验证是否开启UI界面
浏览器中输入hdfs://hadoop002:18080 (注意host)
刚启动应该会提示你没有应用运行日志,这时你开启spark-shell运行个job,注意stop你的sc
之后就可在界面查看到你的日志了
另外还可以获取json,自己搭建自定义的webUI界面,详见REST API
更多更详细的相关信息请移步Spark官网