分享

spark 缓存清理

JME 发表于 2015-12-18 17:30:08 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 24403
我使用的spark 为spark Standalone 模式 集群跑着  每天有很多批处理任务,
我其中的配置如下:
  • export SPARK_LOG_DIR=${SPARK_HOME}/log
  • export SPARK_WORKER_DIR=${SPARK_HOME}/log/run/work
  • export SPARK_LOCAL_DIRS=${SPARK_HOME}/localdirs
  • export SPARK_CONF_DIR=${SPARK_HOME}/conf
  • export SPARK_PID_DIR=${SPARK_HOME}/log
  • export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=1800 -Dspark.worker.cleanup.appDataTtl=100800"



但 每天会产生很多临时目录和文件, 我设置了以上参数,是否没有效果,也不会自动清理文件。

如果上面跑着 spark streaming  程序。  


有如下配置
  • spark.eventLog.enabled           true
  • spark.eventLog.dir               hdfs://namenode:8021/directory
那么 hdfs://namenode:8021/directory  也会产生很多文件,




不知道 如何清理这些临时目录和文件。   求高手解答!!!!!!!!!!!


已有(5)人评论

跳转到指定楼层
atsky123 发表于 2015-12-18 18:08:16

临时文件在什么时候会被删除掉呢?


SPARK_LOCAL_DIRS下的产生的文件夹,确实会在应用程序退出的时候自动清理掉,如果观察仔细的话,还会发现在spark_local_dirs目录有有诸如*_cache和*_lock的文件,它们没有被自动清除。这是一个BUG,可以会在spark 1.3中加以更正。有关该BUG的具体描述,参考spark-4323 https://issues.apache.org/jira/browse/SPARK-4323

$SPARK_LOCAL_DIRS下的*_cache文件是为了避免同一台机器中多个executor执行同一application时多次下载第三方依赖的问题而引进的patch,详见JIRA case spark-2713. 对就的代码见spark/util/Utils.java中的fetchFile函数。https://issues.apache.org/jira/browse/SPARK-2713

如果已经在使用了,有什么办法来清除呢?暴力删除,不管三七二十一,过一段时间将已经存在的cache和lock全部删除。这不会有什么副作用,大不了executor再去下载一次罢了

find $SPARK_LOCAL_DIRS -max-depth 1 -type f -mtime 1 -exec rm -- {} \;
而SPARK_WORK_DIR目录下的形如app-timestamp-seqid的文件夹默认不会自动清除。

那么可以设置哪些选项来自动清除已经停止运行的application的文件夹呢?当然有。

在spark-env.sh中加入如下内容

SPARK_WORKER_OPTS=”-Dspark.worker.cleanup.enabled=true”
注意官方文档中说不管程序是否已经停止,都会删除文件夹,这是不准确的,只有停止掉的程序文件夹才会被删除,我已提交相应的PR.


更多参考:
Apache Spark技术实战之6 --Standalone部署模式下的临时文件清理
http://www.aboutyun.com/thread-11862-1-1.html



回复

使用道具 举报

JME 发表于 2015-12-28 13:58:04
如果 是 spark-streaming  程序在跑着呢? 不可能手动删除吧?  还有 spark.eventLog.dir               hdfs://namenode:8021/directory    这个目录下 也会产生很多文件, 这个 怎么清理。
回复

使用道具 举报

JME 发表于 2015-12-28 14:08:18
atsky123 发表于 2015-12-18 18:08
临时文件在什么时候会被删除掉呢?


如果 是 spark-streaming  程序在跑着呢? 不可能手动删除吧?  还有 spark.eventLog.dir               hdfs://namenode:8021/directory    这个目录下 也会产生很多文件, 这个 怎么清理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条