一、配置
vi spark-defaults.conf 添加
spark.eventLog.enabled truespark.eventLog.dir hdfs://hadoop:9000/spark-logs
#spark.eventLog.dir这个是保存路径#要先在hdfs上创建这个“/spark-logs”目录
vi spark-env.sh,添加
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hadoop:9000/spark-logs"#这个是展示路径
#关于OPTS的东西都要以-D形式表示
当你执行“hdfs dfs -ls /spark-logs”命令时,会出现以“.improgress”为后缀的文件,这个文件是未完成的作业或者正在运行的作业的日志文件。
二、启动:
在${SPARK_HOME}/sbin下执行“./start-history-server.sh”即可启动history-server服务,此时打开http://hadoop001:18080即可打开history-server的网页UI,在这个网页UI中可以查看完成的、未完成的任务以及他们的尝试次数。
##当一个任务被强行终止时,在history-server中,该任务被归类为未完成的任务。没有执行sc.stop的任务也都是为完成的任务。使一个任务完成的唯一方法就是使用sc.stop去停止它。
三、关于history-server的一些重要参数;
参数都是设置在spark-defaults.xml文件中的哦,设置格式为“属性 值”
spark.history.fs.update.interval 默认值10秒
#指定刷新日志的时间,更短的时间可以更快检测到新的任务以及任务执行情况,但过快会加重服务器负载
spark.history.ui.maxApplication 默认值intMaxValue
# 数指定UI上最多显示的作业的数目
spark.history.ui.port 默认值18080
#指定history-server的网页UI端口号
spark.history.fs.cleaner.enabled 默认为false
#指定history-server的日志是否定时清除,true为定时清除,false为不清除。这个值一定设置成true,不然日志文件会越来越大。
spark.history.fs.cleaner.interval 默认值为1d
#指定history-server的日志检查间隔,默认每一天会检查一下日志文件
spark.history.fs.cleaner.maxAge 默认值为7d
# 指定history-server日志生命周期,当检查到某个日志文件的生命周期为7d时,则会删除该日志文件
spark.eventLog.compress 默认值为false
#设置history-server产生的日志文件是否使用压缩,true为使用,false为不使用。
spark.io.compress.codec 默认值lz4
#设置使用的压缩格式
spark.history.retainedApplications 默认值:50
#在内存中保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。
四、Rest Api
自定义history-server的网页UI,需要使用Rest Api:
1)打开Rest api可以访问<server-url>:18080/api/v1, 这个界面内容和history-server网页UI内容一样的,我们可以在“<server-url>:18080/api/v1 ”后面加后缀来获得更加精确明了的信息,比如“<server-url>:18080/api/v1/applications ”就是查看所有的作业信息,其他环境等无关的信息就不会显示,再比如“<server-url>:18080/api/v1/applications/?status=completed ”就是查看所有已经完成的作业的信息,<server-url>值是启用history-server服务的机器ip。
2)打开Rest api可以访问<localhost>:18080/api/v1, 这个界面内容和<localhost>:4040看到的网页UI内容一样的,只能看正在运行的作业,具体参考1)
【来自@若泽大数据】