HDFS上tmp/hive空间资源占用过大的原因,有啥清理机制呢
Hive的临时目录是用来存放不同阶段的map/reduce任务的执行计划和中间结果的,如果Hive任务成功完成的话,临时文件会被自动清理,如果Hive任务被取消或者中断,那么这个任务的临时文件就会被遗留下来。
可以手动删除这些旧文件,但不要删除任务还未完成的临时文件。也可以通过 cron job来定期删除无效的临时文件。
另外,也可以通过配置在每次启动Hive时自动清理,要注意如果配置了这个参数,重启Hive时会花比较长的时间清理临时文件。
在Cloudera manager -> Hive Service -> Configuration -> HiveServer2 Advanced Configuration Snippet (Safety Valve) for ; 中增加如下配置,并重启。
<property>
<name></name>
<value>true</value>
</property>
[hdfs@dsj-419-4t-02 ~]$ hadoop fs -du -h -s hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c
860.7 T 2.5 P hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c
[hdfs@dsj-419-4t-02 ~]$ hadoop fs -ls hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c
Found 5 items
drwx------ - lf_ia_serv supergroup 0 2017-12-06 17:38 hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c/_tmp_space.db
drwx------ - lf_ia_serv supergroup 0 2017-12-06 19:26 hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c/hive_2017-12-06_17-38-27_677_6012246427052471025-1
drwx------ - lf_ia_serv supergroup 0 2017-12-06 17:38 hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c/hive_2017-12-06_17-38-27_677_6012246427052471025-2
drwx------ - lf_ia_serv supergroup 0 2017-12-06 18:15 hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c/hive_2017-12-06_17-38-27_677_6012246427052471025-3
drwx------ - lf_ia_serv supergroup 0 2017-12-06 19:16 hdfs://beh/tmp/hive/lf_ia_serv/84badee0-2f5e-4601-a461-8acff632b85c/hive_2017-12-06_17-38-27_677_6012246427052471025-4
可以通过2017-12-06_17-38-27文件的时间戳在yarn applicaton页面去看一下是否还有这个时间段的query在运行,如果都已经完成了,就可以清理临时文件了。