生产环境中碰到一个问题是spark的history server日志满了
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.FSLimitException$MaxDirectoryItemsExceededException): The directory item limit of /user/spark/applicationHistory is exceeded: limit=1048576 items=1048576
我使用的spark的版本是1.6.0-cdh5.11.0,我去查看了下日志清理功能是打开的,spark.history.fs.cleaner.enabled = true,同时spark.history.fs.cleaner.interval 和spark.history.fs.cleaner.maxAge使用的是默认值。
但是日志清理功能却没有生效,最早的日志一直到4月份的,最终导致了这问题,存储的日志数量超过所允许的最大值,导致spark job最后失败。
放狗搜了一下,发现有不少类似的问题,感觉可能是个bug,看到一个答案说是把默认的时间改下,按照这个思路我试了下,缩短了时间,然后重启了服务器后,发现日志确实被清理了。
但是又发现了另外一个问题,有些运行时失败的spark job的日志没有被清理掉,名称是这种的/user/spark/applicationHistory/application_1536720747876_0437_1.inprogress。 这个数量也不少,只能去Spark的JIRA查询下这问题,发现不少给这个问题提PR的,fix的版本是2.3.0,我们暂时是没法用了。JIRA的地址SPARK-21571。
网友评论