背景
公司的计算平台上,写入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
。
# 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