Hive Server 清理本地临时文件

HiveServer2 scratchdir 在本地存储一些临时文件。如果使用 kill -9 停止 HiveServer2 时,来不及清理本地的 scratchdir。再次启动时,默认是不清理本地的 scratchdir 的。那么多次重启 HiveServer2 后,有可能在本地有大量垃圾文件,这些文件永远不再访问。造成两个问题。

  1. 浪费存储空间。
  2. 如果一个目录下的子目录和文件的数目很多,造成访问变慢。如在 scratchdir 下创建或者查询子目录(文件)非常慢。

1. 查看 scratchdir 的配置目录

注意此目录是 HDFS 目录,在此目录下再为每个用户创建一个子目录。

<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
  </property>

2. 查看 HiveServer 启动时是否清理 scratchdir

当配置为true时,在启动 HiveServer2 时,先删除 hive.exec.scratchdir 设置的目录

hive> set hive.start.cleanup.scratchdir;
hive.start.cleanup.scratchdir=false

3. 是否定时清理 scratchdir

hive> set hive.server2.clear.dangling.scratchdir;
hive.server2.clear.dangling.scratchdir=false
  • 定时周期默认 1800 秒。
hive> set hive.server2.clear.dangling.scratchdir.interval;
hive.server2.clear.dangling.scratchdir.interval=1800s

4. 其他

本地 scratchdir 的配置为:

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>${system:java.io.tmpdir}/${system:user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

当用户名为 hive 时,hive.exec.local.scratchdir 也是 ‘/tmp/hive’,容易和hive.exec.scratchdir 混淆。

hive> set hive.exec.local.scratchdir;
hive.exec.local.scratchdir=/tmp/hive

当用户为 hive 时,hive.exec.local.scratchdir 本地的目录是 ‘/tmp/hive’,注意:hive 是根据用户名生成的。
hive.exec.scratchdir HDFS 目录是 ‘/tmp/hive/hive’,最后的 hive 是根据用户名生成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值