
# 在客户端安装节点的/tmp目录下残留了很多blockmgr-开头和spark-开头的目录
#### 问题
系统长时间运行后，在客户端安装节点的/tmp目录下，发现残留了很多blockmgr-开头和spark-开头的目录。
图1残留目录样例   
![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263900750.png)
#### 回答
Spark任务在运行过程中，driver会创建一个spark-开头的本地临时目录，用于存放业务jar包，配置文件等，同时在本地创建一个blockmgr-开头的本地临时目录，用于存放block data。此两个目录会在Spark应用运行结束时自动删除。
此两个目录的存放路径优先通过SPARK_LOCAL_DIRS环境变量指定，若不存在该环境变量，则设置为spark.local.dir的值，若此配置还不存在，则使用java.io.tmpdir的值。客户端默认配置中spark.local.dir被设置为/tmp，因此默认使用系统/tmp目录。
但存在一些特殊情况，如driver进程未正常退出，比如被kill -9命令结束进程，或者Java虚拟机直接崩溃等场景，导致driver的退出流程未正常执行，则可能导致该部分目录无法被正常清理，残留在系统中。
当前只有yarn-client模式和local模式的driver进程会产生上述问题，在yarn-cluster模式中，已将container内进程的临时目录设置为container临时目录，当container退出时，由container自动清理该目录，因此yarn-cluster模式不存在此问题。
#### 解决措施
可在Linux下设置/tmp临时目录自动清理，或修改客户端中spark-defaults.conf配置文件的spark.local.dir配置项的值，将临时目录指定到特定的目录，再对该目录单独设置清理机制。
