Apache spark Apache Spark不删除临时目录
spark程序完成后,临时目录中仍保留3个临时目录。 目录名如下:spark-2e389487-40cc-4a82-a5c7-353c0feefbb7 目录是空的 当Spark程序在Windows上运行时,一个snappy DLL文件也会保留在临时目录中。 文件名如下:snappy-1.0.4.1-6e117df4-97b6-4d69-bf9d-71c4a627940c-snappyjava 每次Spark程序运行时都会创建它们。因此,文件和目录的数量不断增加 如何让它们被删除 Spark版本是1.3.1和Hadoop 2.6 更新 我追踪了spark的源代码 创建3个“临时”目录的模块方法如下:Apache spark Apache Spark不删除临时目录,apache-spark,Apache Spark,spark程序完成后,临时目录中仍保留3个临时目录。 目录名如下:spark-2e389487-40cc-4a82-a5c7-353c0feefbb7 目录是空的 当Spark程序在Windows上运行时,一个snappy DLL文件也会保留在临时目录中。 文件名如下:snappy-1.0.4.1-6e117df4-97b6-4d69-bf9d-71c4a627940c-snappyjava 每次Spark程序运行时都会创建它们。因此,文件和目录的数量不断增加 如何让它们被删除 Spark版本是
- DiskBlockManager.createLocalDirs
- HttpFileServer.initialize
- SparkEnv.sparkFilesDir
我不知道为什么它们没有标记。这真的是故意的吗?我不认为所有场景都支持清理。我建议编写一个简单的windows计划程序来每晚清理。我不知道如何使Spark清理这些临时目录,但我能够阻止创建snappy XXX文件。这可以通过两种方式实现:
我在开发过程中会这样做,但对于生产环境,可能最好使用压缩和脚本来清理临时目录。Three
SPARK\u WORKER\u OPTS
用于支持WORKER应用程序文件夹清理,复制到此处以供进一步参考:从
,默认值为spark.worker.cleanup.enabled
,启用定期清理工作程序/应用程序目录。请注意,这只影响独立模式,因为纱线的工作方式不同。只清理已停止应用程序的目录false
,默认值为1800,即30分钟,控制工作进程清除本地计算机上旧应用程序工作目录的时间间隔(以秒为单位)spark.worker.cleanup.interval
,默认值为7*24*3600(7天),即在每个worker上保留应用程序工作目录的秒数。这是一个生存的时期,应该取决于可用磁盘空间的大小。应用程序日志和JAR下载到每个应用程序工作目录。随着时间的推移,工作目录会很快填满磁盘空间,特别是在您非常频繁地运行作业的情况下spark.worker.cleanup.appDataTtl
Spark.local.dir
属性更改Spark临时文件夹的路径
SparkConf conf=new SparkConf().setMaster(“本地”)
.setAppName(“测试”)
.set(“spark.local.dir”,“/tmp/spark temp”);
测试完成后,我将手动删除
/tmp/spark temp
文件夹。您需要在程序结束时创建的spark上下文上调用close()。对于spark.local.dir
,它将只移动spark temp文件,但snappy xxx文件仍将存在于/tmp dir中。
虽然没有找到让spark自动清除的方法,但您可以设置JAVA选项:
JVM_EXTRA_OPTS=" -Dorg.xerial.snappy.tempdir=~/some-other-tmp-dir"
要使其移动到另一个目录,因为大多数系统的/tmp大小都很小。虽然我还没有测试过,但可以设置系统属性org.xerial.snappy.lib.path,以便snappy模块查找snappy DLL,而不是无条件提取DLL。请参阅源文件的注释,但根据,它可能已被解析。也许Spark有较旧的库?谢谢,但它仅适用于Spark独立模式。“temp”目录是为本地模式和客户端模式创建的。谢谢,这是一个可能的解决方法。顺便说一句,我已经为这个问题提交了JIRA。请看。谢谢你保存了这一天。有什么方法可以自动删除这些文件吗?