温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1
文档编写目的
Hive作业在运行时会在HDFS的临时目录产生大量的数据文件,这些数据文件会占用大量的HDFS空间。这些文件夹用于存储每个查询的临时或中间数据集,并且会在查询完成时通常由Hive客户端清理。但是,如果Hive客户端异常终止,可能会导致Hive作业的临时或中间数据集无法清理,从而导致Hive作业临时目录占用大量的HDFS空间。本篇文章Fayson主要介绍如何解决清理Hive作业产生的临时文件。
- 测试环境
1.CM和CDH版本为5.15
2
Hive作业临时目录说明
Hive作业在运行时会在HDFS的指定目录下生成作业临时或中间数据集存储目录,此临时目录路径有hive-site.xml配置中的hive.exec.scratchdir参数定义:
- Hive 0.2.0到0.8.0版本中默认值为:/tmp/${user.name}
- Hive0.8.1到0.14.0版本中默认值为:/tmp/hive-${user.name}
- Hive0.14.1及更高版本中默认值为:/tmp/hive/${user.name}
当前Fayson的CDH5.15.0中Hive版本为1.1.0,Hive作业的临时或中间数据集在HDFS的/tmp/hive/${user.name}目录下:
3
清理Hive作业临时及目录
由于Hive客户端的作业异常退出客户端无法正常的清理HDFS的临时目录,从而导致临时数据文件占用了大量的HDFS空间。因此,需要在Hive作业临时目录中删除不需要的目录和已完成作业的目录文件。
注意:清理临时Hive作业产生的临时目录时,不能删除任何正在运行的Hive作业这样可能会导致作业运行失败。只可以删除不再与当