Spark History Server自动删除日志文件

2021-01-04 10:35:01 浏览数 (1)

背景

公司的计算平台上,写入spark-history目录日志文件数超过设定阈值(1048576),导致任务失败。

临时的解决方案

mv spark-history spark-history_bak,并新建spark-history空目录,新起的任务日志可以往新的空目录下写入,不过,如果之前有任务往旧目录写入日志,在重定向过程中,append写入新的日志数据,就会报错,还是影响到了业务。 另外,该目录下有将近100W的文件数,常规hdfs dfs命令操作的话,报out of mememory gc overlimit exceed之类的错误, 通过export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Xmx6000m"加大hadoop客户端堆内存,遍历出文件数,发现这些文件是最近一个月产生的。 自动删除日志文件的机制并没有work。

关于Spark History Server参数

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.history.retainedApplications  默认值:50 在内存中保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。

ambari设置页面

image.png

最终方案:

虽然通过ambari页面设置了该清理文件的时间,不过到spark-historyserver服务器, cd /usr/xdp/current/spark-history-server目录的conf文件下面 看到并没有反映到里面来,只能手动加入。重启 History Server

代码语言:javascript复制
# Generated by Apache Ambari. Wed Dec  2 16:14:32 2020

spark.driver.extraLibraryPath /usr/xdp/current/mapreduce_client/lib/native:/usr/ndp/current/mapreduce_client/lib/native/Linux-amd64-64
spark.eventLog.dir hdfs://cluster123/spark2-history/
spark.eventLog.enabled true
spark.executor.extraLibraryPath /usr/xdp/current/mapreduce_client/lib/native:/usr/xdp/current/mapreduce_client/lib/native/Linux-amd64-64
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 1d
spark.history.fs.cleaner.maxAge 5d
spark.history.fs.logDirectory hdfs://cluster123/spark2-history/
spark.history.fs.numReplayThreads 20
spark.history.fs.update.interval 5s
spark.history.kerberos.enabled true
spark.history.kerberos.keytab /home/hadoop/yarn/conf/spark2.headless.keytab
spark.history.kerberos.principal spark-hz-cluster11@HADOOP2.XXYY.COM
spark.history.provider org.apache.spark.deploy.history.FsHistoryProvider
spark.history.retainedApplications 50
spark.history.store.maxDiskUsage 500g
spark.history.store.path /mnt/dfs/2/spark/historyStore
spark.history.ui.maxApplications 50000
spark.history.ui.port 18081
spark.shuffle.io.maxRetries 18
spark.shuffle.io.retryWait 5s
spark.shuffle.registration.maxAttempts 30
spark.shuffle.registration.timeout 20000
spark.sql.authorization.enable true
spark.sql.autoBroadcastJoinThreshold -1
spark.yarn.historyServer.address spark10.DDFF.org:18081
spark.yarn.queue default

0 人点赞