需求
有时候一个spark任务执行结束了,但是发现结果并不尽人意。这时候想要查看这个APPLICATION的执行情况,看一下是哪个地方出了问题导致程序执行的慢。
但是再去yarn上去看的时候发现程序停止了,无法再查看web UI了该怎么办呢
微信公众号:大数据报文
解决方案
虽然无法查看当前任务的实时执行情况了,但是spark提供了查看历史任务的功能。默认是关闭的。
想要查看历史任务的执行情况需要进行如下配置。
1. 修改spark-default文件,添加如下内容,如果没有这个文件,请拷贝spark-default.sh.template为spark-default.sh进行修改(下同)
spark.master spark://master:7077
#开启事件日志
spark.eventLog.enabled true
#这里是日志的存放路径,需要与该代码块中的最后一项保持一致
spark.eventLog.dir hdfs://master:8020/spark/eventLogs
#这一句是访问历史任务日志的地址
spark.yarn.historyServer.address master:18080
#压缩
spark.eventLog.compress true
#与第三项保持一致
spark.history.fs.logDirectory hdfs://master:8020/spark/eventLogs
2.修改spark-env.sh文件,添加如下内容
#端口号18080与上面文件配置确保一致,retainedApplications表示保留历史任务的个数。路径与上面配置保持一致
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=7 -Dspark.history.fs.logDirectory=hdfs://master:8020/spark/eventLogs"
3.把上面配置文件拷贝到集群其他位置
#进入#SPARK_HOME/sbin,启动spark history-server
start-history-server.sh
#使用jps可以看到进程
$>jps
21066 HistoryServer
现在在浏览器输入上面配置的ip:port,可以看到历史任务列表
在yarn中找到任务,点击history也是同样的效果
THAT'S ALL.
欢迎关注微信公众号:大数据报文